Ajuda com Evento no JButton

2 respostas
Vannessa

Olá, quero uma ajuda com um evento..
É o seguinte, quero fazer um programinha e pans, que tenha uma JButton que todas as vezes que eu clicar nele ele vai mudar um JLabel, com a Mensagem "Liga" e "Desliga"..

import javax.swing.*;
import java.awt.*;
import java.awt.event.*;

public class Equipamento extends JFrame {
    JLabel status, volume, msg;
    boolean ligado, desligado;
    JButton bstatus, volmenus, volmais;
    
public Equipamento () {
    super ("Equipamento");
    
    //Instanciando Objetos
    JLabel status = new JLabel ("Desligado");
    JLabel volume = new JLabel ("Volume Desligado");
    JLabel msg = new JLabel ("Volume:");
    JButton bstatus = new JButton ("Liga/Desliga");
    JButton volmenus = new JButton ("-");
    JButton volmais = new JButton ("+");
    
    //Pegando painel
    Container pane = getContentPane();
    //Setando painel como nulo
    setLayout(null);
    
    //Adicionando Objetos ao Painel
    pane.add(status);
    pane.add(volume);
    pane.add(msg);
    pane.add(bstatus);
    pane.add(volmenus);
    pane.add(volmais);
    
    //Ajustando Objetos
    bstatus.setBounds(40,30,103,20); //direita,emcima,largura,altura
    status.setBounds(230,30,60,20);
    msg.setBounds(170,80,60,20);
    volmais.setBounds(50,130,60,20);
    volmenus.setBounds(120,130,60,20);
    volume.setBounds(220,130,150,20);
    
    //EVENTO DO BOTÃO BSTATUS
    bstatus.addActionListener(new ActionListener(){
        public void actionPerformed(ActionEvent e){
            status.setVisible(true);
            status.setText("Ligado");
            repaint();
           
           //Daí morri aqui :(

   }
    });
    
    //Operacao de fechar janela
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    this.setSize(400,300); //Ajuste do tamanho da tela
    this.setVisible(true); //Tela Visivel
    this.setResizable(false);
}
    
public static void main (String [] args){
    Equipamento windows = new Equipamento();
    
}
}

Não sei como faço pra sempre que clicar naquele botão aparecer "Ligado" e "Desligado", porque ele se inicia como Desligo, clico uma vez e fica Ligado, mais se clicar denovo, não volta a aparecer Desligado :(
Como faz?

2 Respostas

R

Bem simples:

Cria uma variável boolean chamada ligado, com o valor false ou true na declaração, como preferir:

boolean ligado = false;

Depois insere um estrutura de condição dentro do listener do JButton:

<blockquote>

//EVENTO DO BOTÃO BSTATUS

bstatus.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e){
if(ligado) {
          status.setVisible(true);  
          status.setText("Ligado");
          ligado = false;  
        }
        else {
                status.setVisible(true);  
                status.setText("Desligado");
                ligado = true;
        }
});  </blockquote>

o que os if/else fazem ? toda vez que você clicar no JButton, ele vai analisar se o boolean ligado é true, se for, ele altera o JLabel para ligado e muda a varíavel ligado para false, para que no próximo clique ele vá para o else e mude o JLabel para Desligado, a cada clique no botão ele vai alterar seu JLabel.

Abraços.

Vannessa

Obrigada,

Criado 1 de junho de 2012
Ultima resposta 4 de jun. de 2012
Respostas 2
Participantes 2