Atualizando a interface

6 respostas
volnei

Olá,

Bom primeiramente quero esclarecer que não estou procurando um framework como o JForms, estou apenas querendo aprender as boas práticas de uma programação usando Swing.

A primeira dúvida que encontrei foi baseada no seguinte exemplo:

public class Frame extends JFrame{
  
  public Frame(){
       ...
       button.setAction(new LoginAction()) ;
       ...
  }  
}
public class LoginAction extends AbstractAction{

  public void actionPerformed(){
    //nesse ponto, qual a maneira mais elegante de se recuperar os valores que estão na camada view?
    ...
    //valido
    ...
    //e agora, como eu atualizo a view?
  }
}

Como devo fazer para que minha action se comunique com a view?

:wink:

6 Respostas

volnei

Pessoal, pelo menos me digam se não é por aí… :roll:

fredferrao

cara eu nao faço assim nao!!!

faço assim ó:

public class Frame extends JFrame{
     JButton button;
     JTextField edit;
   
   public Frame(){
        button = new JButton("OK");
        edit = new JTextField();.....
        ......bla bla bla
        ...
        ButtonHandler handler = new ButtonHandler();
        button.addActionListener(handler) ;
        ...
   }  
   private class ButtonHandler implements ActionListener{
        public void actionPerformed(ActionEvent e){
              if (e.getSource() == button){
                    edit.setText("um dia eu aprendo");
 }
Ironlynx

Volnei, acho a forma que vc fez a mais clara possível, mas imagine que vc possui dezenas de telas no seu sistema.Vc terá buttonHandler as centenas!(ou mais…)
Eu penso o seguinte: se seu projeto é pequeno, faça assim.Se for grande, melhor usar classes internas mesmo pq pelo menos vc jah saberá da onde o componente que está dando erro pertence.
A não ser que vc tenha muuuitos componentes gerais(que façam a mesma coisa quase sempre), é melhor manter em classes internas pq vc fica louco com bottonHandlerJQualquerCoisa1537… e não adianta, por mais que vc seja “criativo” para dar nomes, vc começa a repetir e a errar pelo excesso…(experiência própria de quem achava que isolar tudo é sempre a melhor solução).

kina

Acho que está bem distribuido, mas você poderia melhorar um pouco mais…
Estou com uma mania de usar o Template Method (Designer Pattern) nas coisas, hehehehe.
Normalmente botões fazem a mesma coisa.

Quanto ao problema dos nomes, se você tem várias telas você pode separar pacotes para cada um, né? Acho que ficaria organizado do mesmo jeito. Talvez até mais visivel que ficar procurando inner Classes por dentro do código.

keller

Opa eai Volnei seguinte cara eu trabalho com as Actions dessa maneira…
:arrow: http://www.guj.com.br/posts/list/0/27352.java#148285

Assim a mesma Action pode ser Utilizada em mais de um Botao,
E também nao fica aquela coisa estranha de utilizar private inner class…

Kina,
Desconheco esse pattern… rola um exemplo? :wink:

valeu? até… :thumbup:
[]'s

volnei

Opa…

Valeu mesmo pessoal!!! Vou dar uma olhada nas respostas… :mrgreen:

Criado 20 de julho de 2005
Ultima resposta 22 de jul. de 2005
Respostas 6
Participantes 5