Evento não funciona

5 respostas
L

ola pessoal, estou aprendendo a criar eventos manualmente no java porem não esta dando certo, o evento não esta acontecendo, há algum erro no codigo? ou ate mesmo faltando algo para que funcione?

Me ajudem pessoal, por favor… Obrigado

SimplesFrame.java

Um frame Padrão que eu criei

public class SimplesFrame extends JFrame {
    
   
     
     public  SimplesFrame(){
      
    //Definindo tamanho da tela segundo a resolução do usuario
     Toolkit kit = Toolkit.getDefaultToolkit();
     Dimension tamanhoTela = kit.getScreenSize();
     int larguraTela = tamanhoTela.width;
     int alturaTela = tamanhoTela.height;
     
     setSize(larguraTela/2, alturaTela/2);
     setLocation(larguraTela/2, larguraTela/2);
     
     Image img = kit.createImage("icon.gif");
     setIconImage(img);
    
    }   
     public void setTitulo(String titulo){
          setTitle(titulo);
     }

}

logo apos vem o PainelBotão, que eu usei pra criar os botoes

public class PainelBotao extends JPanel {
     public PainelBotao(){
          JButton bAmarelo = new JButton("Amarelo");
          JButton bAzul = new JButton("Azul");
          JButton bVermelho = new JButton("Vermelho");
          add(bAmarelo);
          add(bAzul);
          add(bVermelho);
          
          //cria acão dos botões
          ColorAction amareloAction =new ColorAction(Color.YELLOW);
          ColorAction azulAction = new ColorAction(Color.BLUE);
          ColorAction vermelhoAction = new ColorAction(Color.RED);
        
          //atribui acões com botão
          
          bAmarelo.addActionListener(amareloAction);
          bAzul.addActionListener(azulAction);
          bVermelho.addActionListener(vermelhoAction);
          
   
          
     }
     
    private class ColorAction implements ActionListener {
     
     private Color corFundo;
     
     public ColorAction (Color c){
          corFundo = c;
          
     }
     
     public void actionPerformed(ActionEvent e) {
         setBackground(corFundo); 
          
     }
     

 }
}

FormEventos.java

public class FormEventos extends SimplesFrame {
     public FormEventos(){
          PainelBotao painel = new PainelBotao();
          add(painel);
          
     }

}

E por ultimo o TestaFormEventos

public class TestaFormEvento {
     public static void main(String[] arg){
         
          FormEventos frame = new FormEventos();
          frame.setTitle("Teste de eventos");         
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
          frame.setVisible(true);
         
         
          
     }

}

5 Respostas

S

Aparentemente esta Correto..

Copiei teu codigo e rodei. Funcionou!

public class SimplesFrame extends JFrame {   
       
     
       
     public  SimplesFrame(){   
         
    //Definindo tamanho da tela segundo a resolução do usuario   
     Toolkit kit = Toolkit.getDefaultToolkit();   
     Dimension tamanhoTela = kit.getScreenSize();   
     int larguraTela = tamanhoTela.width;   
     int alturaTela = tamanhoTela.height;   
       
     setSize(larguraTela/2, alturaTela/2);   
     setLocation(larguraTela/2, larguraTela/2);   
       
     //Image img = kit.createImage("icon.gif");   
     //setIconImage(img);   
       
    }     
     public void setTitulo(String titulo){   
          setTitle(titulo);   
     }   
  
}

A unica diferença é que coloquei essas duas linhas como comentario.

//Image img = kit.createImage("icon.gif");
//setIconImage(img);

dm_thiago
public void actionPerformed(ActionEvent e) {
         setBackground(corFundo); 
          
     }

Acho que se você colocar e.getSource().setBackground(corFundo); deve funcionar.

L

Teste e ainda não rodou, mesmo comentando as linhas para criação do Icon, não deu certo, a aplicação roda so que os Eventos não funcionam.

DM, o codigo que sugeriu o java não aceita, ele aceita ate e.getSource(), o setBackgronud() ele não aceita…

dm_thiago

Esqueci, precisa de um cast.
Coloca:

((JButton)e.getSource()).setBackground(corFundo);
L

Galera, não sei o que aconteceu!! agora rodou certinho, tava de rosca o negocio aqui, ja tinha compilado em executado o programa e nada, agora compilei e executei e funcionou corretamente… essa eu não entendi…hahaha

valeu galera…

Criado 1 de julho de 2008
Ultima resposta 1 de jul. de 2008
Respostas 5
Participantes 3