Como mantener seleccionado un boton en java?


Polfed: Seleccionado en referencia a presionar el botón. Especificar tal vez un poco más lo que se requiera. Saludos

Respuestas

Respuesta dada por: Polfed
1
Una manera de mantener presionado un botón o en constante ejecución requiere el uso de eventos. Dentro del evento se podría crear un bucle que solo sea liberado o pausado por una condición o estado al presionar el botón.
Ejercicio demostrativo:
- Para este ejemplo se ha usado 2 botones, el primero se presiona y se mantiene en proceso, es decir seleccionado o presionado de forma continua, además si se presiona nuevamente el primer botón llamado Iniciar no permitirá ejecutar ningún proceso ya que se encuentra presionado. Para liberarlo usamos el segundo botón llamado Detener que destruye el proceso y así permitir ejecutar nuevamente el botón Iniciar.
class EventoBoton{
    static int suma = 0;   
    public static boolean estado=true;   
    public static Thread h = null;
    public static void main(String[] args) {
         
JFrame v = new JFrame();
         v.setLayout(null);
         v.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);       
         v.setSize(500, 400);       
         v.setLocationRelativeTo(null);       
         v.setVisible(true);       
         JButton boton = new JButton();       
         boton.setText("Iniciar");       
         boton.setSize(100,35);       
         boton.setLocation(130,50);       
         JButton detener = new JButton();       
         detener.setText("Detener");       
         detener.setSize(100,35);       
         detener.setLocation(250,50);
         //Crear evento Boton al Presionar
         MouseAdapter evento1 = new MouseAdapter() {                       
            @Override           
             public void mousePressed(MouseEvent e){           
                    if(estado==true){
                           System.out.println("# Iniciado");
                           h = new Thread(new Runnable() {
                                  @Override
                                   public void run() {
                                           while(true){
                                                   try{
                                                        System.out.println(suma);
                                                        suma = suma+1;
                                                        Thread.sleep(1000);
                                                    }catch(InterruptedException ex){}
                                            }
                                     }
                            });
                            h.start();
                            estado = false;
                     }
              }
         };
         MouseAdapter evento2 = new MouseAdapter() {
            @Override
            public void mousePressed(MouseEvent e){
                estado = true;
                h.stop();
                System.out.println("# Detenido");
             }
          };
          //Agregar Eventos Botones
          boton.addMouseListener(evento1);
          detener.addMouseListener(evento2);
          //Añadir Botones a la Ventana
          
v.add(boton);
          v.add(detener);
    }
}

Nota: Archivo Adjunto del Ejercicio.
Adjuntos:
Preguntas similares