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

Añadir item a un menú dinámico

Estas en el tema de Añadir item a un menú dinámico en el foro de Java en Foros del Web. Buenas noches compañeros, les traigo una pregunta a ver si me la saben resolver. El caso es el siguiente, tengo un fragmento de un programa ...
  #1 (permalink)  
Antiguo 06/09/2014, 13:55
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 9 años, 9 meses
Puntos: 2
Añadir item a un menú dinámico

Buenas noches compañeros, les traigo una pregunta a ver si me la saben resolver.

El caso es el siguiente, tengo un fragmento de un programa que estoy haciendo que me han ayudado en otro post un compañero :D Entonces, añadí un JBarMenú, en este, quiero añadir de forma estática unos cuantos items dentro de ese menú.

Bien, este primer menú se genera de forma dinámica a través de unas opciones que se realizan desde otro BarMenú. Les adjunto el código y ya me dicen :)

Código PHP:
package SQLDEVELOPER;

import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JTextField;
import javax.swing.JMenuItem;
import javax.swing.JMenuBar;

import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Point;

public class 
Tablas extends JFrame {
    
int columnafilanum;
    
    private static final 
long serialVersionUID 2208659110161828487L;
    private 
JTextField NombreTabla;
    private 
JMenu MenuDatos;
    private 
JMenuItem item1item2item3;
    private 
JMenuBar BarraMenu;

    
/**
     * Launch the application.
     */
    
public static void main(String[] args) {
        
EventQueue.invokeLater(new Runnable() {
            public 
void run() {
                try {
                    
Tablas frame = new Tablas ();
                    
frame.setVisible(true);
                } catch (
Exception e) {
                    
e.printStackTrace();
                }
            }
        });
    }
    
/**
     * Create the frame.
     */
    
public Tablas() {
        
//Propiedades de la ventana o JFrame
        
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        
setResizable(false);
        
setLocation(new Point(300150));
        
getContentPane().setLayout(null);
        
setSize(620350);
        
setLocationRelativeTo(null);
        
setVisible(true);
        
        
ActionListener listener = new ActionListener() {
            public 
void actionPerformed(ActionEvent arg0) {
                
accionar(arg0);
            }
        };
 
        
NombreTabla = new JTextField();
        
NombreTabla.setText("Nombre de la Tabla");
        
NombreTabla.setBounds(101111720);
        
getContentPane().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(listener);
        
MenuDatos.add(item1);
 
        
item2 = new JMenuItem("2");
        
item2.addActionListener(listener);
        
MenuDatos.add(item2);
 
        
item3 = new JMenuItem("3");
        
item3.addActionListener(listener);
        
MenuDatos.add(item3);
 
    }
 
    public 
void accionar(ActionEvent evt) {
        
int quantity Integer.parseInt(evt.getActionCommand());
        
//System.out.println(quantity);
        
JTextField[] campos = new JTextField[quantity];
        
columna 20;
        
fila 50;
        for (
int i 0quantityi++) {
            
campos[i] = new JTextField();
            
campos[i].setBounds(columnafila8020);
            
getContentPane().add(campos[i]);//adiciono al contentpane
            
fila += 30;
        }
        
JMenuBar[] MenuBar = new JMenuBar[quantity];
        
columna 110;
        
fila 50;
        for (
int x 0quantityx++){
            
MenuBar[x] = new JMenuBar();
            
MenuBar[x].setBounds(columnafila8020);
            
getContentPane().add(MenuBar[x]);
            
fila += 30;
        }
        
this.repaint();
    }

Aparte, he encontrado un pequeño bug que me gustaría solucionar, y es, que cuando se selecciona una opción, por ejemplo: 3, se generan 3 Jtextfield y 3 BarMenu, el tema es que si, por ejemplo quiero mejor pone 2, entonces ya no funcionan...

¿Como se puede solucionar este caso y el de mas arriba?

Gracias compañeros :D
  #2 (permalink)  
Antiguo 07/09/2014, 12:20
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: Añadir item a un menú dinámico

¿en serio 61 visitas y nadie sabe como ayudarme?

EDITO: Le he preguntado a mi profesor de Programación y me ha dicho lo siguiente: El error es que no eliminas los componentes viejos antes de añadir los nuevos.

¿Como hago esto?

Última edición por yesod91; 10/09/2014 a las 09:37
  #3 (permalink)  
Antiguo 10/09/2014, 10:16
 
Fecha de Ingreso: julio-2014
Ubicación: España
Mensajes: 83
Antigüedad: 9 años, 9 meses
Puntos: 2
Respuesta: Añadir item a un menú dinámico

Actualizo esto

Etiquetas: item, jframe, jtextfield, programa, string, tablas
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 16:30.