[RESOLVIDO]Programa simples-eventos?

Bom dia à todos do forum!!!
Estou apanhando de um programinha simples:
são 2 botoes ,1=“power” e o 2=“estado” este inicia em verde(green).
Ao clicar no power,o botão2( estado) irá mudar de cor verde para vermelho simulando ligado/desligado.
Não foi por falta de pesquisar que estou postando essa duvida,mas é que ainda não entendi o conceito de eventos

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

public class treinamento extends JFrame
{
public treinamento()
{
super( “Testando Botões” );
JFrame frame = new JFrame(“PAINEL”);

JButton but1 = new JButton(“Power”);
JButton but2 = new JButton(“Estado”);
but2.setBackground(Color.green);
JPanel painel = new JPanel( );
painel.add(but1);
painel.add(but2);
frame.setSize(150,150);
frame.getContentPane( ).add(painel);
frame.setVisible(true);
Trata bot = new Trata();
but1.addActionListener(bot);

}

public class Trata implements ActionListener{
public void actionPerformed(ActionEvent e){

if(e.getSource()==but1){ //DIZ QUE NÃO EXISTE VARIAVEL BUT?

}
}
}
}

//Classe principal.

public class principal {
public static void main(String args[]){
treinamento tr1=new treinamento();

}
}

Não existe bu1 pq ela tah instanciada em outra classe, então ela não reconhece…
quando vc faz

public class Trata implements ActionListener{ 

vc tah criando uma nova classe, ou seja ela não reconhe os atributos de outra classe, entende?

Bom dia oit,
entendi que criei outra classe (Trata)mas,como faço para o reconhecimento do botão but pra tratamento do evento?
grato.

Oi, ao postar códigos, use a tag code, como explicado aqui:

Outra coisa, evite colocar um único método para tratar todos os eventos, no lugar, faça um método por botão. Isso simplifica o código, a manutenção e evita aquele if redundante e nojento ali:

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

public class Treinamento extends JFrame {
   public Treinamento() {
      super( "Testando Botões" );
      JFrame frame = new JFrame("PAINEL");

      JButton but1 = new JButton("Power");
      but1.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent evt) {
            //Ação do botão 1 aqui
         }
      });

      JButton but2 = new JButton("Estado");
      but2.setBackground(Color.green);
      but2.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent evt) {
            //Ação do botão 2 aqui
         }
      });

      JPanel painel = new JPanel( );
      painel.add(but1);
      painel.add(but2);
      frame.setSize(150,150);
      frame.getContentPane( ).add(painel);
      frame.setVisible(true);
      but1.addActionListener(bot);
   }
}

//Classe principal.

public class Principal {
   public static void main(String args[]){
      Treinamento tr1=new Treinamento();
   }
}

Tome também atenção ao dar nomes. Variáveis começam com letras minúsculas, classes com letras maiúsculas. É importante seguir as convenções de código, senão depois gera muita confusão.

Muito obrigado pela aula pelas respostas e pela aula,
Fiz umas modificações,declarei o BUT1 no inicio da classe como atributos(Como um colega do forum me instruiu)e funcionou :smiley:
Valeu vini por observações.
FORUM NOTA 10
grato