Estoy usando un Custome jPanel en mi Gui Builder JFram de la Clase a, el problema que estoy enfrentando es la actualización de los componentes (Etiqueta) en mi JPanel cuando hago clic en el botón de JFrame.aquí está el botón de Gui Builder JFrame ClassA: cambia el color de Jpl y también quitar todas las etiquetas, pero no actualización de las nuevas etiquetas.

private void btnShowActionPerformed(java.awt.event.ActionEvent evt) {
    //TODO add your handling code here:

            Random randomGenerator = new Random();
            for (int idx = 1; idx <= 10; ++idx) {
                q = randomGenerator.nextInt(100);
            }
            jpl1.removeAll();
            new Jpl().printMe(ClassA.q);
            jpl1.revalidate();
            jpl1.setBackground(Color.BLUE);
            jpl1.repaint();
}

aquí es Jpl de la clase que se utiliza como una costumbre componente en GuiBuilder JFrame Clase A.

public class Jpl extends JPanel {

public Jpl() {
    printMe(ClassA.q);
}


public void printMe(int q) {

    for (int i = 0; i <q; i++) {
        System.out.println(i+"rinting lable");
        String htmlLabel = "<html><font color=\"#A01070\">" + i + " New Lable </font></html>";
        JLabel lbl = new JLabel(htmlLabel);
        setLayout(new GridLayout(0, 1));
        add(lbl, Jpl.RIGHT_ALIGNMENT);
        lbl.setForeground(Color.BLUE);
        Border border = BorderFactory.createLineBorder(Color.lightGray);
        lbl.setBorder(border);
        lbl.add(new JSeparator(SwingConstants.HORIZONTAL));

        lbl.addMouseListener(new MouseAdapter() {

            @Override
            public void mousePressed(MouseEvent e) {
                JLabel label = (JLabel) e.getSource();
                JOptionPane.showMessageDialog(null, "You Slected");
                System.out.println(label.getText() + "NO AKKA is Selected");
            }
        });
    }

}

1 Comentario

  1. 2

    Está llamando printMe() en una nueva instancia de Jpl, pruebe que:

    private void btnShowActionPerformed(java.awt.event.ActionEvent evt) {
        //TODO add your handling code here:
    
                Random randomGenerator = new Random();
                for (int idx = 1; idx <= 10; ++idx) {
                    q = randomGenerator.nextInt(100);
                }
                jpl1.removeAll();
                jpl1.printMe(ClassA.q); //HERE - REMOVED new and using jpl1 instance
                jpl1.setBackground(Color.BLUE);
                jpl1.revalidate();
                jpl1.repaint();
    }

    De no entender por qué usted bucle de 10 veces su número al azar. Sólo el último resultado se mantendrá, tal vez un querían usar q += randomGenerator.nextInt(100);. También, ClassA.q debe ser reemplazado por el q si se trata de la misma variable.

    • Muy, muy de agradecer completo para que usted lo ha resuelto mi problema.
    • Funciona!! Gracias

Dejar respuesta

Please enter your comment!
Please enter your name here