Simples,mas......(Eventos)?[RESOLVIDO]

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();
		
	
	
}

}

O compilador está certo (claro).
Sua variável não existe no escopo do método do seu ActionListener. Ela está sendo criada dentro do construtor e quando o construtor termina de executar, aí ela já não existe mais.
Você poderia fazer o seguinte:

public class Treinamento extends JFrame { // em Java, nome de classe é maiúsculo
   private JButton but1; // declara a variável como um membro da classe
   public Treinamento() {
   ...

Isso deve funcionar.
(Quando postar código por aqui, use as tags code, por favor.)

Funcionou visola,
Muito obrigado,declarei como voce falou,no inicio atributos da classe,
valeu pela dica de que classe tem que começar com letra Maiuscula… :smiley: