[RESOLVIDO]Programa simples-eventos?

4 respostas
ribeiro220

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.<em>;

import java.awt.</em>;

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

}
}

4 Respostas

oitathi

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?

ribeiro220

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.

ViniGodoy

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.

ribeiro220

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

Criado 21 de janeiro de 2011
Ultima resposta 21 de jan. de 2011
Respostas 4
Participantes 3