A Classe abaixo não compila e informação o seguinte erro:
D:\Java\Exercicios>javac Janela.java
Janela.java:3: Janela is not abstract and do
eClicked(java.awt.event.MouseEvent) in java.
public class Janela extends Frame implements
^
Janela.java:104: cannot find symbol
symbol : variable getSource
location: class java.awt.event.MouseEvent
if (e.getSource == btOk)
^
Janela.java:104: cannot find symbol
symbol : variable btOk
location: class Janela
if (e.getSource == btOk)
^
Janela.java:107: cannot find symbol
symbol : variable getSource
location: class java.awt.event.MouseEvent
if (e.getSource == btStop)
^
Janela.java:107: cannot find symbol
symbol : variable btStop
location: class Janela
if (e.getSource == btStop)
[code]import java.awt.;
import java.awt.event.;
public class Janela extends Frame implements MouseListener{
private Button btTotaliza;
private TextField tNome;
private Label lNome;
private Label lIdade;
private TextField tIdade;
private Label lSexo;
private CheckboxGroup group;
private Checkbox cbFem;
private Checkbox cbMasc;
private Label lTotalFeminino;
private Label lTotalMasculino;
private Label lStatus;
private TextField msg;
public Janela() {
super("Cadastro para emprego");
// define botão sair como fechar
//this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
this.setLayout(new GridLayout(7,1));
Panel p1 = new Panel();
p1.setLayout(new FlowLayout(FlowLayout.LEFT));
this.add(p1);
lNome = new Label("Nome:");
tNome = new TextField(30);
p1.add(lNome);
p1.add(tNome);
Panel p2 = new Panel();
p2.setLayout(new FlowLayout(FlowLayout.LEFT));
this.add(p2);
lIdade = new Label("Idade:");
tIdade = new TextField(10);
p2.add(lIdade);
p2.add(tIdade);
Panel p4 = new Panel();
p4.setLayout(new FlowLayout(FlowLayout.LEFT));
this.add(p4);
Label lSexo = new Label("Sexo");
p4.add(lSexo);
group = new CheckboxGroup();
cbFem = new Checkbox("Feminino",group,false);
cbMasc = new Checkbox("Masculino",group,false);
p4.add(cbFem);
p4.add(cbMasc);
Panel p5 = new Panel();
p5.setLayout(new FlowLayout(FlowLayout.RIGHT));
this.add(p5);
btTotaliza = new Button("Totaliza");
lTotalFeminino = new Label("Total Feminino:");
p5.add(btTotaliza);
p5.add(lTotalFeminino);
Panel p6 = new Panel();
p6.setLayout(new FlowLayout(FlowLayout.RIGHT));
this.add(p6);
lTotalMasculino = new Label("Total Masculino:");
p6.add(lTotalMasculino);
Panel p7 = new Panel();
p7.setLayout(new FlowLayout(FlowLayout.LEFT));
this.add(p7);
lStatus = new Label("Status");
p7.add(lStatus);
msg = new TextField(10);
Button btOk = new Button("Ok");
Button btStop = new Button("Stop");
btOk.addMouseListener(this);
btStop.addMouseListener(this);
addWindowListener(new java.awt.event.WindowAdapter() {
public void windowClosing(java.awt.event.WindowEvent evt) {
System.exit(0);
}
});
pack();
}
public void mousePressed(MouseEvent e){}
public void mouseReleased(MouseEvent e){}
public void mouseEntered(MouseEvent e){}
public void mouseExited(MouseEvent e){}
public void mouseCliked(MouseEvent e){
if (e.getSource == btOk)
msg.setText("OK foi clicado");
if (e.getSource == btStop)
msg.setText("Stop foi clicado");
}
public static void main (String args[]) {
Janela j = new Janela();
j.setVisible(true);
}
}[/code]
Acontece que está dentro das normas de implementação de um Listener.
No exercício é proibido usar Classes Adaptadoras.
O estranho é que, se os métodos de Listener estiverem numa classe a parte que implementa a MouseListener tudo funciona.
Tendo uma classe a parte o trecho:
btOk.addMouseListener(this);
Fica como:
btOk.addMouseListener(instanciaDaClasseAParte);
Teoricamente a classe no corpo deste tópico é para compilar?