No pacote controle colocou uma classe Controle e tem uma parte assim:
Public class Controle
{
private TelaPrincipal tp;
public Controle (TelaPrincipal tp)
{
this.tp = tp;
//this.tp.addMenuListener(new MenuListener());
}
//class MenuListener implements ActionListener
{
//public void actionPerformed (ActionEvent e)
{
if(e.getActionCommand().equals("Depositar"))
{
TelaDeposito td = new TelaDeposito();
//td.addDepositoListener(new DepositoListener(td));
}
}
}
class DepositoListener implements ActionListener
.
.
.
}
Bem pessoal, as minhas dúvidas são as linhas comentadas…eu até ja estudei essa parte de eventos no período passado mas eu nao lembro direito…o material do periodo passado ta tudo no meu pc e meu pc ta ruim, ele nao ta ligando e o material que eu achei na internet eu não consegui entender direito.
Será que vcs podem me explicar em uma linguagem simples o que as linhas comentadas fazem, eu sei que é pedir muito mas eu gostaria muito que vocês me ajudassem.
desculpe a demora, mas como eu falei, estou sem PC.
eu sei que não fazem nada, eu queria uma explicação do código, eu vou falar pelo o que eu entendi mas nao sei se vai estar certo, ai vcs podem me corrigir ?
public void addMenuListener (ActionListener l) //método que poderia ser qualquer outro nome que recebe uma variável l do tipo ActionListener que é um tipo de evento.
{
JMenuItem1.addActionListener(l); //adiciona ao JMenuItem1 um evento passando para o JMenuItem1 a variável l que é do tipo ActionListener.
}
[code] Public class Controle
{
private TelaPrincipal tp;
public Controle (TelaPrincipal tp)
{
this.tp = tp;
this.tp.addMenuListener(new MenuListener()); //adiciona à varivael tp o método MenuListener que esta na classe TelaPrincipal passando para tp a classe MenuListener, essa parte eu nao entendi muito bem.
}
class MenuListener implements ActionListener //classe onde trata todos os eventos de tp.
{
public void actionPerformed (ActionEvent e) //método de tratamento dos eventos que eu quiser colocar.
{
if(e.getActionCommand().equals("Depositar"))
{
TelaDeposito td = new TelaDeposito();
td.addDepositoListener(new DepositoListener(td)); //o mesmo caso do MenuListener acima, eu nao entedi.
}
}
}
class DepositoListener implements ActionListener
.
.
.
} [/code]
deu pra entender agora minha dúvida ?
eu gostaria muito de uma, não é bem uma explicação, mas um comentário citando o que acontece nas linhas comentadas.
Na classe TelaPrincipal foi adicionado na linha 01 um menu do tipo ActionListener, que é na verdade é uma interface do Java utilizada para eventos. Na linha 03 ele adicionou um item de menu no menu . Ex: Menu Arquivo/item de menu Salvar.
Na classe Controle na linha 03 foi criada uma varíavel do tipo TelaPrincipal, pois com essa variável poderei chamar o método addMenuListener na classe TelaPrincipal. Na linha 05 é criado um método que recebe como parâmetro um objeto TelaPrincipal. Na linha 07 é repassado o valor do parâmetro para o atributo declarado na linha 03. Na linha 04 é chamado o método addMenuListener criado na TelaPrincipal, que recebe como o parâmetro o construtor MenuListener (construtor é um método responsável por inicializar os valores de atributos de uma classe). Mesmo caso da linha 18 que recebe como parâmetro um construtor da classe DepositoListener.
Dica: pesquise sobre construtores. vai facilitar mais o entendimento.
recebe ?
bom, vamos desmembrar o código:
1 - this.tp.addMenuListener();
2 - MenuListener m = new MenuListener()
1- é chamado o método addMenuListener, mas lá na classe TelaPrincipal o método recebe como parâmetro “ActionListener l”, na hora de chamar o método nessa linha eu num teria que passar alguma coisa ?
2 - é criado o objeto onde logo após eu crio a classe MenuListener onde eu vou tratar o evento.
Perceba que na linha 11 da classe Controle a classe MenuListener está implementando uma outra interface ActionListener que possui o método actionPerformed que é implementado a partir da linha 13, pois as interfaces tem seus métodos implementados em classes concretas. (Pesquise sobre interfaces e heranças) . E realmente é passado alguma coisa que é um objeto MenuListener que implementa a ActionListener.