Sim. Procure pelo padrão de objetos Observer.
Aqui tem um exemplo:
macario1983:
eu estava verificando possibilidad de deixar o codigo menos direcionados ao componentes criados, por exemplo
tenho 3 jTextField
jTextField1
jTextField2
jTextField3
e ai trabalhei usando for nos componentes e cast pelo tipo verificando se é o tipo daquele objeto usando instanceof
Não entendi nada. Geralmente você não precisar usar instanceof, já que cada componente dispara seu próprio evento e tem seu próprio listener.
O pessoal costuma a fazer uma besteira aqui no GUJ, que é fazer todos os componentes apontarem para o mesmo listener. Isso força o cara a ter que testar a origem do evento, o que é enfadonho, sujeito a erros e desnecessário, se você codificar direito.
Sim.
charles.eduardo
macario1983, me desculpe, porem não consigo explicar suas duvidas.
Mas, encontra-se aqui o link para o tutorial da oracle sobre os listerners, espero que possa contribuir ao seu conhecimento…
Listener (ouvinte) “escuta” o evento, por exemplo o clique em um botão e realiza a ação definida no método actionPerformed.
Não entendi o que quis dizer com componentes criados… Se for referente a usar JPanel, JButton, J… etc. não vai contra umas das ideias da POO de reaproveitar o máximo possível e evitar “reinventar” a roda ?
Quanto a questão do painel se tornar dono do componente criado… não sei se seria essa a definição correta, no entanto é o Gerenciador de Layout do Painel que vai decidir sobre o tamanho e o local dos componentes adicionados a ele, assim como o Gerenciador de Layout da moldura , por exemplo o JFrame , que fica responsável por decidir sobre o tamanho e o local dos componentes adicionados a ele, por exemplo o Painel.
Me desculpe se eu estiver enganado, também sou novato em java, mas como decidi fazer parte da comunidade GUJ por causa das boas respostas e informações passadas pelos outros membros, resolvi também tentar contribuir com o que eu souber. Afinal, também pode ser uma forma de aprender.
M
macario1983
macario1983:
eu estava verificando possibilidad de deixar o codigo menos direcionados ao componentes criados, por exemplo
tenho 3 jTextField
jTextField1
jTextField2
jTextField3
e ai trabalhei usando for nos componentes e cast pelo tipo verificando se é o tipo daquele objeto usando instanceof
Cara seria assim, representando com trecho de codigo
Não seria melhor adicionar o listener diretamente no JSpinner?
M
macario1983
como assim, adicionar diretamente…?
estou vendo aki no material que o pessoal passou um exemplo no site da oracle…
E
entanglement
Adicionar o listener diretamente em um componente é criar uma classe anônima (que é uma coisa que foi criada pela Sun, atual Oracle, só para isso mesmo - facilitar a codificação de listeners para componentes Swing e AWT).
Algo como:
Adicionar o listener diretamente em um componente é criar uma classe anônima (que é uma coisa que foi criada pela Sun, atual Oracle, só para isso mesmo - facilitar a codificação de listeners para componentes Swing e AWT).
Algo como:
JButton jbt = new JButton();
...
jbt.addActionListener (new ActionListener() {
...
hum...ok
seria criar uma classe a parte...pq do modo que vi o professor fazendo...era direto na mesma classe
ate o netbeans sugere que pode haver um vazamento de memoria do construtor
M
macario1983
lendo o livro use a cabeça sobre GUI, lá explica melhor o que foi citado acima como melhor forma de se trabalhar com listener
obrigado pela ajuda de todos
E
entanglement
Eu sei de onde vem esse erro. São alguns professores que aprenderam Java na versão 1.0, quando isso era necessário.
Uma vez que introduziram o recurso de classes anônimas na versão 1.1 (olhe, nesse tempo a Microsoft ainda licenciava o Java da Sun ), isso deveria ter sido abolido - ter N componentes sendo tratados no mesmo listener. É realmente confuso.