elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Arreglado, de nuevo, el registro del warzone (wargame) de EHN


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  JTabbedPane con GUI builder de netbeans
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: JTabbedPane con GUI builder de netbeans  (Leído 5,045 veces)
peixiño

Desconectado Desconectado

Mensajes: 2


Ver Perfil
JTabbedPane con GUI builder de netbeans
« en: 22 Febrero 2013, 13:47 pm »

Hola,

Soy nuevo aquí. Estoy haciendo una aplicación para mi proyecto de fin de carrera.

Quiero preguntaros unas dudas que tengo sobre los paneles de pestañas JTabbedPane.

Estoy programando una aplicación con un JFrame inicial que pida un número entero, que será el número de pestañas que necesito. Al darle a aceptar, se abrirá otra ventana (daría igual JFrame que Dialog, ¿no?) con un panel con el núemro de pestañas solicitado anteriormente.

Haciéndolo a mano (sin el builder), no es complicado, pero el tema es que estoy trabajando con el GUI builder de Netbeans. En los paneles de dentro de las pestañas tengo que trabajar con muchos JTextFields y JLabels, por lo que hacerlo a mano me lleva mucho tiempo y no queda tan bien estructurado mediante gridlayouts.

No consigo hacer que en el segundo JFrame (o Dialog) se cree el número de pestañas pedido, pues sólo soy capaz de diseñar desde el prinicipio con un número fijo de ellas. Desgraciadamente, no se puede modificar el initComponents() para hacerle un bucle para crearlas...

¿Me podéis echar una mano con esto? Ya digo que tiene que ser con el GUI builder.

Espero haberme explicado claramente.

Muchas gracias


En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: JTabbedPane con GUI builder de netbeans
« Respuesta #1 en: 22 Febrero 2013, 18:30 pm »

las ideas malas es mejor apartarlas de la cabeza

es como que no te guste un tipo de película y luego te pasas la vida criticando a ese genero y criticando el poco talento de sus actores y directores pero lo haces molesto y te interesa mucho el porque hacen esas películas

Luego después de un análisis y pensamiento profundo simplemente te das cuenta que fue una estupidez criticarlos que no vale prestarle interés si no te gusta simplemente no lo ves y no tienes ninguna razón coherente para tener algún tipo de molestia o enojo por ver una película que no te gusta


si algo que no tiene importancia y no es fundamental simplemente te causa problemas hacerlo simplemente no lo haces y no te amargas la vida tratando de hacer algo que no tiene valor.Es mejor tratar de buscar una solución mas simple talvez en el futuro después de un constante entrenamiento practica y estudio resulte muy fácil de hacerlo de la manera complicada y mas cool , pero si te faltan los tiempos y no es trascendental pues simplemente no lo haces

Como agregar codigo en netbeans de forma programatica?

Código
  1. /*
  2.  * To change this template, choose Tools | Templates
  3.  * and open the template in the editor.
  4.  */
  5. package javaapplication7;
  6.  
  7. /**
  8.  *
  9.  * @author luis
  10.  */
  11. public class NewJFrame extends javax.swing.JFrame {
  12.  
  13.    /**
  14.      * Creates new form NewJFrame
  15.      */
  16.    public NewJFrame() {
  17.        initComponents();
  18.        setTitle("titulo");<---Aqui agrego todo el codigo que quiera sin ninguna restricion
  19.  
  20.    }
  21.  
  22.    /**
  23.      * This method is called from within the constructor to initialize the form.
  24.      * WARNING: Do NOT modify this code. The content of this method is always
  25.      * regenerated by the Form Editor.
  26.      */
  27.    @SuppressWarnings("unchecked")
  28.  
  29.    /**
  30.      * @param args the command line arguments
  31.      */
  32.    public static void main(String args[]) {
  33.        /*
  34.          * Set the Nimbus look and feel
  35.          */
  36.        //<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">
  37.        /*
  38.          * If Nimbus (introduced in Java SE 6) is not available, stay with the
  39.          * default look and feel. For details see
  40.          * http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html
  41.          */
  42.        try {
  43.            for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) {
  44.                if ("Nimbus".equals(info.getName())) {
  45.                    javax.swing.UIManager.setLookAndFeel(info.getClassName());
  46.                    break;
  47.                }
  48.            }
  49.        } catch (ClassNotFoundException ex) {
  50.            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  51.        } catch (InstantiationException ex) {
  52.            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  53.        } catch (IllegalAccessException ex) {
  54.            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  55.        } catch (javax.swing.UnsupportedLookAndFeelException ex) {
  56.            java.util.logging.Logger.getLogger(NewJFrame.class.getName()).log(java.util.logging.Level.SEVERE, null, ex);
  57.        }
  58.        //</editor-fold>
  59.  
  60.        /*
  61.          * Create and display the form
  62.          */
  63.        java.awt.EventQueue.invokeLater(new Runnable() {
  64.  
  65.            public void run() {
  66.                new NewJFrame().setVisible(true);
  67.            }
  68.        });
  69.    }
  70.    // Variables declaration - do not modify
  71.    // End of variables declaration
  72. }
  73.  


mira que después del método initComponents() puedes escribir lo que se te venga en gana dentro. Incluso puedes poner el bucle del que estas hablando.

del método initComponents todo es auto generado y no es editable es una ***** que alguien te diga que no eres lo suficiente mente inteligente como para editar el código que tu mismo creaste (no estoy molesto con tigo)

como crear un panel de entrada de datos?

el panel en si
Código
  1. package javaapplication7;
  2.  
  3. import java.awt.BorderLayout;
  4. import java.awt.FlowLayout;
  5. import java.awt.GridLayout;
  6. import javax.swing.JButton;
  7. import javax.swing.JLabel;
  8. import javax.swing.JPanel;
  9. import javax.swing.JTextField;
  10.  
  11. public class PanContacto extends JPanel {
  12.  
  13.    private JPanel pnEtiquetas = new JPanel();
  14.    private JPanel panComponentes = new JPanel();
  15.    private JPanel panPrincipal = new JPanel();
  16.    private JPanel panBotones =new JPanel();
  17.    private JLabel lblNombre = new JLabel("Nombre");
  18.    private JLabel lblApellido = new JLabel("Apellido");
  19.    private JLabel lblDirecion = new JLabel("Direcion");
  20.    private JLabel lblEdad = new JLabel("Edad");
  21.    private JLabel lblPais = new JLabel("Pais");
  22.  
  23.    private JTextField txtNombre = new JTextField();
  24.    private JTextField txtApellido = new JTextField();
  25.    private JTextField txtDirecion = new JTextField();
  26.    private JTextField txtEdad = new JTextField();
  27.    private JTextField txtPais = new JTextField();
  28.  
  29.    private JButton btnAceptar=new JButton("Aceptar");
  30.    private JButton btnCancelar=new JButton("Cancelar");
  31.  
  32.    public PanContacto() {
  33.        setLayout(new BorderLayout());
  34.        add(panPrincipal, BorderLayout.NORTH);
  35.  
  36.        panPrincipal.setLayout(new BorderLayout());
  37.        panPrincipal.add(pnEtiquetas, BorderLayout.WEST);
  38.        panPrincipal.add(panComponentes, BorderLayout.CENTER);
  39.        panPrincipal.add(panBotones,BorderLayout.SOUTH);
  40.  
  41.        pnEtiquetas.setLayout(new GridLayout(5, 1));
  42.        pnEtiquetas.add(lblNombre);
  43.        pnEtiquetas.add(lblApellido);
  44.        pnEtiquetas.add(lblDirecion);
  45.        pnEtiquetas.add(lblEdad);
  46.        pnEtiquetas.add(lblPais);
  47.  
  48.        panComponentes.setLayout(new GridLayout(5, 1));
  49.        panComponentes.add(txtNombre);
  50.        panComponentes.add(txtApellido);
  51.        panComponentes.add(txtDirecion);
  52.        panComponentes.add(txtEdad);
  53.        panComponentes.add(txtPais);
  54.  
  55.        panBotones.setLayout(new FlowLayout(FlowLayout.RIGHT));
  56.        panBotones.add(btnAceptar);
  57.        panBotones.add(btnCancelar);
  58.  
  59.    }
  60. }
  61.  
  62. }
  63.  
  64.  

ejecutar una aplicacion que use el panel

Código
  1. package javaapplication7;
  2.  
  3. import javax.swing.JFrame;
  4.  
  5. public class Apliaccion {
  6.  
  7.    public void comiensa() {
  8.  
  9.        JFrame frame = new JFrame("");
  10.        frame.add(new PanContacto());
  11.        frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  12.        frame.setSize(300,400);
  13.        frame.setLocationRelativeTo(null);
  14.        frame.setVisible(true);
  15.  
  16.    }
  17.  
  18.    public static void main(String arg[]) {
  19.        new Apliaccion().comiensa();
  20.    }
  21. }
  22.  

https://www.dropbox.com/s/d5ng4tqqov23761/formulario.png


« Última modificación: 22 Febrero 2013, 19:37 pm por sapito169 » En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: JTabbedPane con GUI builder de netbeans
« Respuesta #2 en: 22 Febrero 2013, 18:45 pm »

váyanse a la **** los malditos hijos de **** que por la  **** no me permiten escribir como **** se me pega la regalada gana

solo es broma no se lo tomen en serio ;D
En línea

peixiño

Desconectado Desconectado

Mensajes: 2


Ver Perfil
Re: JTabbedPane con GUI builder de netbeans
« Respuesta #3 en: 22 Febrero 2013, 21:04 pm »


Antes de nada gracias por tu tiempo y por tu respuesta.

Entiendo tu postura. Hasta ahora los componentes SWING siempre los fui programando a mano. Pero en este caso estoy haciendo una excepción. Quiero meter en cada tabbedPane varias JTextField, JLabels y botones. Lo tengo hecho así mediante GridLayouts, pero creéme que en este caso prefiero la flexibilidad del GUI builder. Queda mucho más amistoso a la vista del usuario final, y es más fácil de "dejarlo bonito".

Perdí muchísimo tiempo para alinear bien cada componente de los GridLayouts, con sus GridLayouts superiores e inferiores, así que en esta ocasión me rendí a la sencillez del GUI builder, que está hecho especialmente para esto, para el diseño de interfaces gráficas.

Lo dicho, gracias igualmente por el tiempo que te has tomado añadiendo los ejemplos.

Sobre lo que estoy preguntando, a ver si alguien me puede echar una mano...
En línea

sapito169


Desconectado Desconectado

Mensajes: 628



Ver Perfil
Re: JTabbedPane con GUI builder de netbeans
« Respuesta #4 en: 23 Febrero 2013, 04:42 am »

quieres algo asi?
https://www.dropbox.com/s/p2c7z5srb1yek47/pantall%20con%20varios%20paneles.png


primero creas los formularios con netbeans y su paleta

https://www.dropbox.com/s/p3bvl5a1ok8w6c1/EjemploPanelNetbeansSelectorContratos.JPG

https://www.dropbox.com/s/pfw2j0bsdef26xi/EjemploPanelNetbeansContrato.JPG

y luego hago esto

https://www.dropbox.com/s/cbc04c5cj13nhpm/diagramaActividadAgregaPanelesDinamicos.JPG

y en código es así

Código
  1.  
  2. package javaapplication7;
  3.  
  4. public class FrmPrincipal extends javax.swing.JFrame {
  5.  
  6.  
  7.    public FrmPrincipal() {
  8.        initComponents();
  9.    }
  10.  
  11.    @SuppressWarnings("unchecked")
  12.    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
  13.    private void initComponents() {
  14.         ----->basura autogenerada aqui
  15.    }// </editor-fold>                        
  16.  
  17.    private void txtMesesActionPerformed(java.awt.event.ActionEvent evt) {                                        
  18.        // TODO add your handling code here:
  19.    }                                        
  20.  
  21.    private void btnMostrarActionPerformed(java.awt.event.ActionEvent evt) {                                          
  22.        FrmContratos frmContratos = new FrmContratos(this,true);
  23.        frmContratos.setMeses(txtMeses.getText());
  24.        frmContratos.setVisible(true);
  25.    }                                          
  26.  
  27.  
  28.    public static void main(String args[]) {
  29.        java.awt.EventQueue.invokeLater(new Runnable() {
  30.  
  31.            public void run() {
  32.                new FrmPrincipal().setVisible(true);
  33.            }
  34.        });
  35.    }
  36.    // Variables declaration - do not modify                    
  37.    private javax.swing.JButton btnMostrar;
  38.    private javax.swing.JComboBox jComboBox1;
  39.    private javax.swing.JLabel jLabel1;
  40.    private javax.swing.JLabel jLabel2;
  41.    private javax.swing.JTextField txtMeses;
  42.    // End of variables declaration                  
  43. }
  44.  


Código
  1. package javaapplication7;
  2.  
  3. import java.awt.BorderLayout;
  4. import javax.swing.JPanel;
  5. import javax.swing.JTextArea;
  6.  
  7.  
  8.  
  9. public class FrmContratos extends javax.swing.JDialog {
  10.  
  11.    private ServicioDeContratos servicioDeContratos = new ServicioDeContratos();
  12.  
  13.    public FrmContratos(java.awt.Frame parent, boolean modal) {
  14.        super(parent, modal);
  15.        initComponents();
  16.    }
  17.  
  18.    @SuppressWarnings("unchecked")
  19.    // <editor-fold defaultstate="collapsed" desc="Generated Code">                          
  20.    private void initComponents() {
  21.           ----->basura autogenerada aqui
  22.    }// </editor-fold>                        
  23.    // Variables declaration - do not modify                    
  24.    private javax.swing.JTabbedPane jTabbedPane1;
  25.    // End of variables declaration                  
  26.  
  27.    void setMeses(String textoMeses) {
  28.        String[] meses = textoMeses.split(",");
  29.  
  30.        for (String mes : meses) {
  31.            agreagTab(mes);
  32.        }
  33.  
  34.  
  35.    }
  36.  
  37.    private void agreagTab(String mes) {
  38.        jTabbedPane1.addTab(mes, creaPanelParaElMes(mes));
  39.    }
  40.  
  41.    private JPanel creaPanelParaElMes(String mes) {
  42.        JPanel jPanel = new JPanel();
  43.        jPanel.setLayout(new BorderLayout());
  44.        jPanel.add(new JTextArea(servicioDeContratos.getContratoDelMes(mes)));
  45.        return jPanel;
  46.    }
  47. }
  48.  

Código
  1. package javaapplication7;
  2.  
  3. public class ServicioDeContratos {
  4.  
  5.    public String getContratoDelMes(String mes) {
  6.        return "Contrato Del mes:" + mes + "\nblalalba lbala b l albla lal balbl\n\nblalalba lbala b l albla lal balbl";
  7.    }
  8. }
  9.  
  10.  

porfavor responde

« Última modificación: 23 Febrero 2013, 05:55 am por sapito169 » En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ayuda insert netbeans utilizando palette de netbeans
Bases de Datos
luxferre 0 4,182 Último mensaje 6 Febrero 2012, 07:15 am
por luxferre
se puedes ocultar pestanas en un jtabbedpane
Java
josco 2 6,983 Último mensaje 14 Septiembre 2012, 01:38 am
por josco
Manera eficiente de mostrar datos en jtabbedpane
Java
Juanma91 0 1,443 Último mensaje 5 Marzo 2014, 03:27 am
por Juanma91
Ayuda con JPanel de dibujo en Jtabbedpane
Java
Phoenixfx 0 2,003 Último mensaje 11 Diciembre 2022, 04:28 am
por Phoenixfx
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines