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);
}
ActionListener [RESOLVIDO]
12 Respostas
Olá digolipertte 
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:
Olá digolipertte :DO 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!
Sim, foi erro de português, não de lógica/sintaxe e as chaves deixei por conta dele.
:thumbup:
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);
}
}
package PacotePlayer;
public class Principal {
public static void main(String [] args){
Tela.tela();
}
}
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]
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 Telaat 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();
}
}
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]
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);
}
}
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
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.
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
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);
}
}
você esqueceu de importar as bibliotecas corretas:
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
provavelmente isso vai resolver os dois erros…
Valeu pessoal esta resolvido.
muito obrigado