entre Desarrolladores

Recibe ayuda de expertos

Registrate y pregunta

Es gratis y fácil

Recibe respuestas

Respuestas, votos y comentarios

Vota y selecciona respuestas

Recibe puntos, vota y da la solución

Pregunta

1voto

Eliminar JButton con While

Según se ve en el código, lo que intento es que, al clicar en otro botón del primer menú, quiero borrar los JButton para poder volver a generar el nuevo. Lo que no se, es como eliminarlo... ¿Alguna idea?

// Creamos la categoría para recoger los productos según su familia
        if (botonProducto != null) {
            while (){
                contentPane.remove(botonProducto);
            }
        } else {
            try {
                rs = objConex.Productos(nombre);
                columna = 357;
                filab = 86;
                while (rs.next()) {
                    botonProducto = new JButton(rs.getString("NOMBRE"));
                    botonProducto.setBounds(columna, filab, 95, 70);
                    contentPane.add(botonProducto);
                    columna += 100;
                    botonProducto.addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                            JButton obj = (JButton) e.getSource();
                            String nombre = obj.getText();
                            try {
                                pedidos(nombre);
                            } catch (ParseException e1) {
                                e1.printStackTrace();
                            } catch (SQLException e1) {
                                e1.printStackTrace();
                            }
                        }
                    });
                }

            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        }
        this.repaint();
        this.revalidate();

2 Respuestas

2votos

Yesod Puntos3550

EDITO: Este es el resultado tan esperado para mi :) No se si se puede optimizar, supongo que si, pero por lo menos ahí queda la respuesta y la solución :)

// Creamos la categoría para recoger los productos según su familia
        Productos ProductosporFamilia = new Productos();
        String NombreProducto = null;
        if (botonProducto != null) {
            for (JButton eliminar : botonProducto){
                contentPane.remove(eliminar);
            }
            try {
                // Conseguimos la cantidad de datos que tenemos que generar para el vector de objetos
                rs = objConex.CountProductos(nombre);
                if (rs.next()){
                    botonProducto = new JButton[rs.getInt(1)];
                }
                rs = objConex.Productos(nombre);
                columna = 357;
                filab = 86;
                int i=0;
                while (rs.next()) {
                    // Recojo los nombres de la BD y genero un botón dentro de la matriz
                    NombreProducto = rs.getString("NOMBRE");
                    botonProducto[i] = new JButton(NombreProducto);
                    botonProducto[i].setBounds(columna, filab, 95, 70);
                    contentPane.add(botonProducto[i]);
                    columna += 100;
                    botonProducto[i].addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                            JButton obj = (JButton) e.getSource();
                            String nombre = obj.getText();
                            try {
                                pedidos(nombre);
                            } catch (ParseException e1) {
                                e1.printStackTrace();
                            } catch (SQLException e1) {
                                e1.printStackTrace();
                            }
                        }
                    });
                    i++;
                }

            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        } else {
            try {
                // Conseguimos la cantidad de datos que tenemos que generar para el vector de objetos
                rs = objConex.CountProductos(nombre);
                if (rs.next()){
                    botonProducto = new JButton[rs.getInt(1)];
                }
                rs = objConex.Productos(nombre);
                columna = 357;
                filab = 86;
                int i=0;
                while (rs.next()) {
                    // Recojo los nombres de la BD y genero un botón dentro de la matriz
                    NombreProducto = rs.getString("NOMBRE");
                    botonProducto[i] = new JButton(NombreProducto);
                    botonProducto[i].setBounds(columna, filab, 95, 70);
                    contentPane.add(botonProducto[i]);
                    columna += 100;
                    botonProducto[i].addActionListener(new ActionListener() {
                        public void actionPerformed(ActionEvent e) {
                            JButton obj = (JButton) e.getSource();
                            String nombre = obj.getText();
                            try {
                                pedidos(nombre);
                            } catch (ParseException e1) {
                                e1.printStackTrace();
                            } catch (SQLException e1) {
                                e1.printStackTrace();
                            }
                        }
                    });
                    i++;
                }

            } catch (SQLException e1) {
                e1.printStackTrace();
            }
        }
        this.repaint();
        this.revalidate();

0voto

Peter comentado

Gracias por compartir la solución.

Saludos.

0voto

1raziel1 Puntos2210

si no puedes borrarlo siempre puedes hacerlo invisible

1voto

Yesod comentado

¿Podrías poner el código?

0voto

Peter comentado

¿Como puedes hacerlo invisible?

0voto

1raziel1 comentado

jbutton.setVisible(false);

1voto

Yesod comentado

Eso funcionaría si fuera solo un JButton, pero date cuenta que hablamos de una matriz de objetos...primero tienes que recorrer la matriz :)

Por favor, accede o regístrate para responder a esta pregunta.

Otras Preguntas y Respuestas


...

Bienvenido a entre Desarrolladores, donde puedes realizar preguntas y recibir respuestas de otros miembros de la comunidad.

Conecta