Pregunta

He creado una aplicación de cambios y hay un " Inicio " botón en la GUI. Quiero eso cada vez que haga clic en "Iniciar" botón, el botón de inicio debe estar deshabilitado y el " Stop " botón estar habilitado.

Para eso, he escrito el siguiente código en " ActionPeformed (...) " método del " Inicio " botón

startButton.setEnabled(false);
stopButton.setEnabled(true);

Pero el código anterior no está creando el efecto deseado en la GUI.

¿El código anterior es correcto para lo que quiero hacer?

No funciona con & repaint () " también.

Editar:

El código es muy largo, así que no puedo pegar todo el código. Sin embargo, puedo decir más sobre el código.

En el " ActionPeformed " método de " inicio " botón, después de llamar a las dos declaraciones anteriores, estoy ejecutando un " SwingWorker " hilo.

¿Este hilo crea algún problema?

¿Fue útil?

Solución

  

Para eso, he escrito el siguiente código en " ActionPeformed (...) " método del " Inicio " botón

Necesita que ese código esté en el actionPerformed (...) del ActionListener registrado con el botón Inicio, no para el botón Inicio en sí.

Puede agregar un simple ActionListener como este:

JButton startButton = new JButton("Start");
startButton.addActionListener(new ActionListener() {
     public void actionPerformed(ActionEvent ae) {
        startButton.setEnabled(false);
        stopButton.setEnabled(true);
     }
   }
 );

tenga en cuenta que su startButton anterior deberá ser final en el ejemplo anterior si desea crear el oyente anónimo en el ámbito local.

Otros consejos

  

El código es muy largo, así que no puedo pegar   todo el código.

Puede haber varias razones por las cuales su código no funciona. Tal vez declaró las variables del botón dos veces, por lo que en realidad no está cambiando habilitar / deshabilitar el botón como cree que está. Quizás esté bloqueando el EDT.

Debe crear un SSCCE para publicar en el foro.

Entonces depende de usted aislar el problema. Comience con un marco simple que tenga dos botones y vea si su código funciona. Una vez que empiece a funcionar, intente iniciar un subproceso que simplemente duerma durante 10 segundos para ver si aún funciona.

Aprenda cómo funciona la base antes de escribir un programa de 200 líneas.

Aprenda cómo hacer una depuración básica, no somos lectores de la mente. No podemos adivinar qué tonto error estás cometiendo en función de tu descripción verbal del problema.

Esto funciona.

public class TestButton {

public TestButton() {
    JFrame f = new JFrame();
    f.setSize(new Dimension(200,200));
    JPanel p = new JPanel();
    p.setLayout(new FlowLayout());

    final JButton stop = new JButton("Stop");
    final JButton start = new JButton("Start");
    p.add(start);
    p.add(stop);
    f.getContentPane().add(p);
    stop.setEnabled(false);
    stop.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            start.setEnabled(true);
            stop.setEnabled(false);

        }
    });

    start.addActionListener(new ActionListener() {
        public void actionPerformed(ActionEvent e) {
            start.setEnabled(false);
            stop.setEnabled(true);

        }
    });
    f.setVisible(true);
}

/**
 * @param args
 */
public static void main(String[] args) {
    new TestButton();

}

}

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top