Má Prática?

10 respostas
I

Pessoal, estou com uma dúvida, será q da forma como estou programando é uma má prática? Vejam o código bem simples:

public class Teste(){

     public Component montaFormulario(){
               JLabel a = new JLabel("Label um");
               JLabel b = new JLabel("Label dois");
               JTextField x = new JTexField(40);
               JPanel panel = new JPanel();
               panel.add(a);
               panel.add(b);
               panel.add(x);
              return panel;
     }

 .
 .
 .
}

Bom Pessoal, minha dúvida é o seguinte:
Toda hora que executar esse classe ela sempre vai criar os JPanel com os componentes add a ele. É uma boa prática eu testar se eles são null ou não tem necessidade?
Vi um código parecido e fiquei pensando que talvez posso estar programando erroneamente, pois cada vez que a classe é executada um novo JPanel é criado.

Grato

10 Respostas

Rafael_Nunes

Favor não duplicar seus posts.

Grato.

I

Foi mal, é pq a net saiu fora do ar e acabei enviando duas vezes.

sergiotaborda

Vc acabou de os criar, não em como ser null. não precisa fazer essa verificação.

Um código equivalente ao seu e mais limpo

public class Teste(){

     public Component montaFormulario(){
               JPanel panel = new JPanel();
               panel.add(new JLabel("Label um"));
               panel.add(new JLabel("Label dois"));
               panel.add( new JTexField(40));
              return panel;
     }
}
I

Certo! Mas seu eu quiser acessar os dados do JTextField depois não tem como, não é vd? Ou estou enganado?

T

Uma idéia: brinque um pouco com o Visual Editor do Eclipse (baixe o Eclipse 3.2, ou Callisto - o VE não funciona direito no Eclipse 3.3).

Veja como é que o Eclipse gera o código.

Se você vir direitinho o que ele faz, vai ver que é bem organizado (embora um pouco “verboso”).

Luca

Olá

O que significa a sigla vd?

[]s
Luca

GiancarloBraga

Luca:
Olá

O que significa a sigla vd?

[]s
Luca

Rsrsrs.
vd significa ‘verdade’.

sergiotaborda

inicjava:
Certo! Mas seu eu quiser acessar os dados do JTextField depois não tem como, não é vd? Ou estou enganado?

De certa forma sim. Não é completamente correto acesar metodos como JTextField.getText(). É melhor acessar sempre os modelos dos componentes. No caso do JTextField é Document, no caso de outros componentes serão outros modelos.
Embora à primeira vista prático, manter uma referencia ao objeto visual vai-se tornar um problema lá na frente.
Se o seu programa é bem básico, tem poucas telas e as logicas não são muito dificies tudo bem, mas usar uma programação orientada a objetos , no swing, significa trabalhar com os modelos e não com os componentes gráficos em si.

Enfim, vc não é obrigado a manter uma referencia ao objeto gráfico se não quiser.
Esta é uma das maravilhas do Swing.

I

Bom, essa parte de Document, eu não conheço.
Será que vc poderia dar um exemplo de:

“Embora à primeira vista prático, manter uma referencia ao objeto visual vai-se tornar um problema lá na frente.”

Grato!

sergiotaborda

inicjava:
Bom, essa parte de Document, eu não conheço.
Será que vc poderia dar um exemplo de:

“Embora à primeira vista prático, manter uma referencia ao objeto visual vai-se tornar um problema lá na frente.”

Dê uma olhada em
http://java.sun.com/javase/6/docs/api/javax/swing/JTextField.html

sobretudo no método getDocument()

Criado 3 de setembro de 2007
Ultima resposta 4 de set. de 2007
Respostas 10
Participantes 6