Foros del Web » Programación para mayores de 30 ;) » Java »

[SOLUCIONADO] Jtextfield en bucle For

Estas en el tema de Jtextfield en bucle For en el foro de Java en Foros del Web. Buenas tardes/noches compañeros, estoy intentando hacer que mediante un bucle en una GUI, aparezcan segun la opción elegida en el menubar x Textfield. Por el ...
  #1 (permalink)  
Antiguo 28/08/2014, 12:06
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 9 años, 8 meses
Puntos: 2
Jtextfield en bucle For

Buenas tardes/noches compañeros, estoy intentando hacer que mediante un bucle en una GUI, aparezcan segun la opción elegida en el menubar x Textfield. Por el momento tengo lo siguiente:

Código PHP:
        //Instancio un menú de opciones
        
BarraMenu= new JMenuBar();
        
BarraMenu.setBounds(1301111020);
        
getContentPane().add(BarraMenu);
        
MenuDatos= new JMenu("¿Cuantos datos?");
        
BarraMenu.add(MenuDatos);
            
item1= new JMenuItem("1");
            
MenuDatos.add(item1);
            
            
item2= new JMenuItem("2");
            
MenuDatos.add(item2);
            
            
item3= new JMenuItem("3");
            
MenuDatos.add(item3);
            
            
JTextField [] campos = new JTextField[BarraMenu]; 
            
int columna=20
            
int fila=10
            for(
int i=0;i<BarraMenu.getComponentIndex(BarraMenu);i++) { 
                
campos[i]= new JTextField(); 
                
campos[i].setBounds(columna,fila,80,20); 
                
add(campos[i]);//adiciono al contentpane 
                
fila+=30;
            } 
El tema es que no se como terminar el código, donde pone new JTextField[BarraMenu]; entre los corchetes no se que hay que poner, puse eso por desconocimiento.

¿Alguien puede ayudarme?
  #2 (permalink)  
Antiguo 30/08/2014, 18:19
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 9 años, 8 meses
Puntos: 2
Respuesta: Jtextfield en bucle For

¿En serio nadie sabe como echarme una mano?
  #3 (permalink)  
Antiguo 01/09/2014, 00:20
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Jtextfield en bucle For

Hola,

Cita:
Iniciado por yesod91 Ver Mensaje
¿En serio nadie sabe como echarme una mano?
Posiblemente es porque te hizo falta mostrar o mencionar una parte del código. ¿Cómo haces para manejar los eventos del JMenu? Si por ejemplo, le implementaste un actionPerformed al JMenuItem podrías usar usar algo así:

Código Java:
Ver original
  1. int quantity = Integer.parseInt(evt.getActionCommand());
  2.  
  3.             JTextField [] campos = new JTextField[BarraMenu];
  4.             int columna=20;
  5.             int fila=10;
  6.             for(int i=0;i<quantity;i++) {
  7.                 campos[i]= new JTextField();
  8.                 campos[i].setBounds(columna,fila,80,20);
  9.                 add(campos[i]);//adiciono al contentpane
  10.                 fila+=30;
  11.             }

O algo parecido a eso.
Saludos,
  #4 (permalink)  
Antiguo 02/09/2014, 04:56
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 9 años, 8 meses
Puntos: 2
Respuesta: Jtextfield en bucle For

Puse lo que tengo como código, lo demás era la declaración en si misma de la parte gráfica...

Por eso pedí a ver que se os ocurría para ver como realizar tal acción.

EDITO: Pongo el código entero con lo nuevo que me has dicho para ver que podéis decirme:

Código PHP:
    public Tablas() {
        
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
setBounds(100100450300);
        
contentPane = new JPanel();
        
contentPane.setBorder(new EmptyBorder(5555));
        
setContentPane(contentPane);
        
contentPane.setLayout(null);
        
        
NombreTabla = new JTextField();
        
NombreTabla.setText("Nombre de la Tabla");
        
NombreTabla.setBounds(101111720);
        
contentPane.add(NombreTabla);
        
NombreTabla.setColumns(10);
        
        
//Instancio un menú de opciones
        
BarraMenu= new JMenuBar();
        
BarraMenu.setBounds(1301111020);
        
getContentPane().add(BarraMenu);
        
MenuDatos= new JMenu("¿Cuantos datos?");
        
BarraMenu.add(MenuDatos);
            
item1= new JMenuItem("1");
            
item1.addActionListener(new ActionListener() {
                public 
void actionPerformed(ActionEvent arg0) {
                    
num 1;
                }
            });
            
MenuDatos.add(item1);
            
            
item2= new JMenuItem("2");
            
item2.addActionListener(new ActionListener() {
                public 
void actionPerformed(ActionEvent e) {
                    
num 2;
                }
            });
            
MenuDatos.add(item2);
            
            
item3= new JMenuItem("3");
            
item3.addActionListener(new ActionListener() {
                public 
void actionPerformed(ActionEvent e) {
                    
num 3;
                }
            });
            
MenuDatos.add(item3);
            
            
JTextField [] campos = new JTextField[BarraMenu]; //Aqui me da error, justo en BarraMenu
            
columna=20
            
fila=10
            for(
int i=0;i<num;i++) { 
                
campos[i]= new JTextField(); 
                
campos[i].setBounds(columna,fila,80,20); 
                
add(campos[i]);//adiciono al contentpane 
                
fila+=30;
            }
    }


Última edición por yesod91; 02/09/2014 a las 05:06
  #5 (permalink)  
Antiguo 02/09/2014, 11:28
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Jtextfield en bucle For

Hola,

A eso me refería compañero, la forma de manejar los eventos es muy variada, aunque la que usaste es la más común, no es la única,

El resultado de unir lo que habías hecho es algo así:

Código Java:
Ver original
  1. ActionListener listener = new ActionListener() {
  2.                 public void actionPerformed(ActionEvent arg0) {
  3.                     accionar(arg0);
  4.                 }
  5.             }
  6.  
  7.             item1.addActionListener(listener);
  8.             item2.addActionListener(listener);
  9.  
  10.  
  11. public void accionar(ActionEvent evt) {
  12.  
  13.             removeAll(); // Este elimina todo lo que esté dentro del Container
  14.  
  15.             int quantity = Integer.parseInt(evt.getActionCommand());
  16.  
  17.             JTextField [quantity - 1] campos;
  18.             int columna=20;
  19.             int fila=10;
  20.             for(int i=0;i<quantity;i++) {
  21.                 campos[i]= new JTextField();
  22.                 campos[i].setBounds(columna,fila,80,20);
  23.                 add(campos[i]);//adiciono al contentpane
  24.                 fila+=30;
  25.             }  
  26.  
  27.             pack(); // Posiblemente se necesite un pack, refresh, o updateUI por aquí.
  28.  
  29. }

Saludos,

Última edición por HackmanC; 02/09/2014 a las 11:47 Razón: declaración del array & pack
  #6 (permalink)  
Antiguo 02/09/2014, 15:46
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 9 años, 8 meses
Puntos: 2
Respuesta: Jtextfield en bucle For

No me funciona...no genera los textfield cuando le doy al Jmenubar en el 2 por ejemplo...¿Como se puede solucionar?
  #7 (permalink)  
Antiguo 02/09/2014, 20:20
Avatar de HackmanC  
Fecha de Ingreso: enero-2008
Ubicación: Guatemala
Mensajes: 1.817
Antigüedad: 16 años, 2 meses
Puntos: 260
Sonrisa Respuesta: Jtextfield en bucle For

Hola,

Cita:
Iniciado por yesod91 Ver Mensaje
...¿Como se puede solucionar?
Habían algunos errores, no me acordaba como inicializar un array y otros detalles, pero básicamente el concepto ya lo tenías, solo era de unir las partes de la manera correcta, arreglando los detalles no comprendo muy bien que parte no te funciona. Por ejemplo:

Código Java:
Ver original
  1. public Tablas() {
  2.  
  3.         ActionListener listener = new ActionListener() {
  4.             public void actionPerformed(ActionEvent arg0) {
  5.                 accionar(arg0);
  6.             }
  7.         };
  8.  
  9.         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  10.         setBounds(100, 100, 450, 300);
  11.         contentPane = new JPanel();
  12.         contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
  13.         setContentPane(contentPane);
  14.         contentPane.setLayout(null);
  15.  
  16.         NombreTabla = new JTextField();
  17.         NombreTabla.setText("Nombre de la Tabla");
  18.         NombreTabla.setBounds(10, 11, 117, 20);
  19.         contentPane.add(NombreTabla);
  20.         NombreTabla.setColumns(10);
  21.  
  22.         //Instancio un menú de opciones
  23.         BarraMenu = new JMenuBar();
  24.         BarraMenu.setBounds(130, 11, 110, 20);
  25.         getContentPane().add(BarraMenu);
  26.         MenuDatos = new JMenu("¿Cuantos datos?");
  27.         BarraMenu.add(MenuDatos);
  28.         item1 = new JMenuItem("1");
  29.         item1.addActionListener(listener);
  30.         MenuDatos.add(item1);
  31.  
  32.         item2 = new JMenuItem("2");
  33.         item2.addActionListener(listener);
  34.         MenuDatos.add(item2);
  35.  
  36.         item3 = new JMenuItem("3");
  37.         item3.addActionListener(listener);
  38.         MenuDatos.add(item3);
  39.  
  40.     }
  41.  
  42.     public void accionar(ActionEvent evt) {
  43.         int quantity = Integer.parseInt(evt.getActionCommand());
  44.         System.out.println(quantity);
  45.         JTextField[] campos = new JTextField[quantity];
  46.         int columna = 20;
  47.         int fila = 50;
  48.         for (int i = 0; i < quantity; i++) {
  49.             campos[i] = new JTextField();
  50.             campos[i].setBounds(columna, fila, 80, 20);
  51.             add(campos[i]);//adiciono al contentpane
  52.             fila += 30;
  53.         }
  54.         this.repaint();
  55.     }

Te queda de tarea eliminar los que ya estaban puestos la primera vez que se seleccionaron,

Saludos,
  #8 (permalink)  
Antiguo 03/09/2014, 04:44
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 9 años, 8 meses
Puntos: 2
Respuesta: Jtextfield en bucle For

Muchísmas gracias amigos, yo es que no sabía como terminarlo, estoy aprendiendo y bueno ya sabes como funciona esto de aprender xDD

Etiquetas: bucle, jtextfield
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:24.