ActionListener [RESOLVIDO]

12 respostas
digolipertte
Oi pessoal. Estou tentando colocar um evento em um botao mas não to conseguindo escrever o codigo correto. Alguem poderia me da uma força ai.
package PacotePlayer;

import java.awt.*;

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

 public class Tela {
	 public static void tela(){
		
		
		 
		JFrame janela = new JFrame();
		
		
		janela.setSize(800, 200);
	
		janela.setBackground(Color.green);
		JButton b = new JButton("Sair");
		janela.add(b);
		
		
		 ActionListener al = new ActionListener() { 
             public void actionPerformed(ActionEvent e) {
                     System.out.println("OK");
             }
     };
        b.addActionListener(al);
        
		b.setSize(200, 150);
		b.setBackground(Color.LIGHT_GRAY);
		b.setForeground(Color.white);
		
		
	    janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
		janela.setVisible(true);
		
		
		
		
	}

12 Respostas

InicianteJavaHenriqu

Olá digolipertte :smiley:

O evento do botão está certo.

O que está errado é seu método construtor:

public static void tela()

o correto seria:

public tela()

E falta colocar @Override em cima de:

public void actionPerformed(ActionEvent e)

o correto seria:

@Override
public void actionPerformed(ActionEvent e)

:thumbup:

lina
InicianteJavaHenrique:
Olá digolipertte :D

O evento do botão está certo.

O que está errado é seu método construtor:

public static void tela()

o correto seria:

public tela()

Oi,

Não. Na verdade o correto seria:

public Tela() {}

No java existe uma diferenciação de letras maiúsculas e minusculas.

Seguindo o seu exemplo, pode-se fazer:

public class Tela {

   public Tela() {

	JFrame janela = new JFrame();
        janela.setSize(800,200);
        janela.setBackground(Color.green);
	
    JButton b = new JButton("Sair");
    b.addActionListener(
      new ActionListener(){
        public void actionPerformed(ActionEvent e){
          JOptionPane.showMessageDialog(null, 
            "Fui clicado");
        }
      }
    );
	janela.add(b);
   }
}

Tchauzin!

InicianteJavaHenriqu

Sim, foi erro de português, não de lógica/sintaxe e as chaves deixei por conta dele.

:thumbup:

digolipertte
Oi pessoal fiz como vcs falaram mas não funcionou e deu bastante erro, não entendi muito bem.
public class Tela {
	 public Tela(){
		
		
		 
		JFrame janela = new JFrame();
		
		
		janela.setSize(800, 200);
	
		
		janela.setBackground(Color.green);
		
		JButton b = new JButton("Sair");
		b.addActionListener(new ActionListener()) {  
			        public void actionPerformed(ActionEvent e){  
			          JOptionPane.showMessageDialog(null,   
			            "Fui clicado");  
			        }  
		
		janela.add(b);
		
		b.setSize(200, 150);
		b.setBackground(Color.LIGHT_GRAY);
		b.setForeground(Color.white);
		
		
	    janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);
		janela.setVisible(true);
		
		
		
		


}
}
e no principal onde eu chamo a tela
package PacotePlayer;

public class Principal {
	public static void main(String [] args){
		Tela.tela();
		
	}

	
}
eu tentei mudar de minuscula para maiuscula no tela() mas dai deu erro.
digolipertte

quando eu vou rodar o programa da essa mensagem no eclipse
[size=18]
"Exception in thread “main” java.lang.Error: Unresolved compilation problem:
The method Tela() is undefined for the type Tela

at PacotePlayer.Principal.main(Principal.java:5)"

[/size]

lucas_guj

digolipertte:
quando eu vou rodar o programa da essa mensagem no eclipse
[size=18]
"Exception in thread “main” java.lang.Error: Unresolved compilation problem:
The method Tela() is undefined for the type Tela

at PacotePlayer.Principal.main(Principal.java:5)"

[/size]
package PacotePlayer;

public class Principal {

public static void main(String [] args){

Tela.tela();
}

}

Mude essa classe assim

package PacotePlayer;  
  
public class Principal {  
    public static void main(String [] args){  
        Tela tela = new Tela();
    }
}
digolipertte

Oi Lucas_guj fiz tudo oq vc falou certinho e deu outro problema. [size=18] ActionEvent cannot be resolved to a type
Syntax error on token ")", ; expected

at PacotePlayer.Tela.<init>(Tela.java:21)
at PacotePlayer.Principal.main(Principal.java:7)
[/size]

Vou postar o code da clase Tela
package PacotePlayer;

import java.awt.*;

import javax.swing.*;

public class Tela {  
    public Tela(){  
         
         
          
       JFrame janela = new JFrame();  
         
         
       janela.setSize(800, 200);  
     
         
       janela.setBackground(Color.green);  
         
       JButton b = new JButton("Sair");  
       b.addActionListener(new ActionListener());    
                   public void actionPerformed(ActionEvent e){    
                     JOptionPane.showMessageDialog(null,     
                       "Fui clicado");    
                   }    
         
       janela.add(b);  
         
       b.setSize(200, 150);  
       b.setBackground(Color.LIGHT_GRAY);  
       b.setForeground(Color.white);  
         
         
       janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);  
       janela.setVisible(true);  
         
         
         
         
 
 
}  
}
Ja to sem durmi em cima disso meu.
C_Porto

digolipertte o método actionPerformed(ActionEvent e) faz parte da classe ActionListener, o modo como foi escrita a classe anônima do ActionListener para ser adicionada ao botão não vai funcionar, abaixo a classe Tela com a correção:

package PacotePlayer;  
  
import java.awt.*;  
  
import javax.swing.*;  
  
public class Tela {    
    public Tela(){    
           
           
            
       JFrame janela = new JFrame();    
         
         
	       janela.setSize(800, 200);    
	       
	           
	       janela.setBackground(Color.green);    
	           
	       JButton b = new JButton("Sair");    
	       b.addActionListener(new ActionListener() {
			
			@Override
			public void actionPerformed(ActionEvent arg0) {
				   JOptionPane.showMessageDialog(null,       
                   "Fui clicado");      
			}
	        });
	           
	       janela.add(b);    
	           
	       b.setSize(200, 150);    
	       b.setBackground(Color.LIGHT_GRAY);    
	       b.setForeground(Color.white);    
	           
	           
	       janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);    
	       janela.setVisible(true);    
}    
}

houve apenas um erro de sintaxe na linha 21

lucas_guj

A mensagem que deu disse que você cometeu um erro de Sintaxe, e pelo que vi, declarou a classe anônima errada como o colega C.Porto disse, faça o que ele falou e deve funcionar.

digolipertte
Corrige como vcs falaram mas continua dando dois erros um em
b.addActionListener(new ActionListener() {
e outro no
public void actionPerformed(ActionEvent arg0) {
[size=18]Exception in thread "main" java.lang.Error: Unresolved compilation problems: The method addActionListener(ActionListener) in the type AbstractButton is not applicable for the arguments (new ActionListener(){}) ActionListener cannot be resolved to a type ActionEvent cannot be resolved to a type

at PacotePlayer.Tela.<init>(Tela.java:22)
at PacotePlayer.Principal.main(Principal.java:7)
[/size]

package PacotePlayer;

import java.awt.Event;
import java.awt.*;    
    
import javax.swing.*;    
    
public class Tela {      
    public Tela(){      
             
             
              
       JFrame janela = new JFrame();      
           
           
           janela.setSize(800, 200);      
             
                 
           janela.setBackground(Color.green);      
                 
           JButton b = new JButton("Sair");      
           b.addActionListener(new ActionListener() {  
              
            @Override  
            public void actionPerformed(ActionEvent arg0) {  
                   JOptionPane.showMessageDialog(null,         
                   "Fui clicado");        
            }  
            });  
                 
           janela.add(b);      
                 
           b.setSize(200, 150);      
           b.setBackground(Color.LIGHT_GRAY);      
           b.setForeground(Color.white);      
                 
                 
           janela.setDefaultCloseOperation(janela.EXIT_ON_CLOSE);      
           janela.setVisible(true);      
}      
}
C_Porto

você esqueceu de importar as bibliotecas corretas:

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

provavelmente isso vai resolver os dois erros…

digolipertte

Valeu pessoal esta resolvido.
muito obrigado

Criado 19 de abril de 2012
Ultima resposta 25 de abr. de 2012
Respostas 12
Participantes 5