.getText() retorna null?!

Olá pessoal,

Estou desenvolvendo um programinha acadêmico onde tenho que realizar a pesquisa de alguns dados em um banco de dados.
Quanto à conexão em JDBC td bem, a minha dúvida é a seguinte:

Existe uma janela onde pode-se realizar a pesquisa de uma peça (POR NOME ou POR CÓDIGO) que está cadastrada no Banco de dados, como segue:

A partir daí, eu gostaria de tratar as informações digitadas pelo usuário, como segue:

 private void pesquisaMouseClicked(java.awt.event.MouseEvent evt) {//GEN-FIRST:event_pesquisaMouseClicked
        
            if ((textoNome.getText() != null) && (textoCodigo.getText() == null)){
            	
            	   //Pesquisa por nome
            }
            
            else if ((textoNome.getText() == null) && (textoCodigo.getText() != null)){
            
                    //Pesquisa por código
            }
            
            else if ((textoNome.getText() != null) && (textoCodigo.getText() != null)){
            	
            	  //Pesquisa por código
            }
            
            else if (((textoNome.getText())!= null) && ((textoCodigo.getText()) == null)) {
            	
            	JOptionPane.showMessageDialog(null, "Digite alguma informação");
            	}

[b]O problema é que quando clico no botão “Pesquisar”, nada acontece.

Peço, por favor, que me digam se há algum problema na lógica mostrada no código acima.

Desde já, grato.

Abraço a todos.

Flw![/b]

O método getText() no JTextField nunca retorna null, se vazio ele retornará a string vazia “”.

Troque o código xxxxx.getText() == null por xxxxx.getText().isEmpty()

Abraço

De umna olhada na documentação deste metodo
http://java.sun.com/j2se/1.4.2/docs/api/javax/swing/text/JTextComponent.html#getText()
flw

[quote=volnei]O método getText() no JTextField nunca retorna null, se vazio ele retornará a string vazia “”.

Troque o código xxxxx.getText() == null por xxxxx.getText().isEmpty()

Abraço[/quote]
Exatamente isso.

Agora, uma pergunta: é impressão minha ou você está usando AWT para construir a interface gráfica??

Uma coisa que você está fazendo e é estranha, é que você deve usar ActionListener e não um evento de Mouse para quando alguém clicar no botão (ou apertar a barra de espaços no mesmo quando ele estiver selecionado).

E ainda: se o seu field não tem valor padrão algum, ele vai retornar null. E como você colocou a checagem de null em todos os IFs, nunca vai acontecer nada.

E respondendo o amigo que perguntou sobre AWT: ele não está usando AWT, afinal dá pra ver o JOptionPane no código. Se sua pergunta foi devido à aparência, ele deve ter pedido pro Swing assumir o LookAndFeel default do sistema operacional.

[quote=rael_gc]Uma coisa que você está fazendo e é estranha, é que você deve usar ActionListener e não um evento de Mouse para quando alguém clicar no botão (ou apertar a barra de espaços no mesmo quando ele estiver selecionado).

E ainda: se o seu field não tem valor padrão algum, ele vai retornar null. E como você colocou a checagem de null em todos os IFs, nunca vai acontecer nada.

E respondendo o amigo que perguntou sobre AWT: ele não está usando AWT, afinal dá pra ver o JOptionPane no código. Se sua pergunta foi devido à aparência, ele deve ter pedido pro Swing assumir o LookAndFeel default do sistema operacional.
[/quote]

A parte do ActionListener é verdade.

Mas se o TextField não tem texto ele retorna uma String vazia ("") e nunca null.

E, não, não é o LookAndFeel default pois se fosse o botão seria arredondado. E usar AWT para as janelas não quer dizer que não possamos chamar um JOptionPane (e acho que é isso que ele está fazendo).

Não entendi pq o botão deveria ser arredondado. Existem várias versões de Windows com lookandfeel com botão quadrado. Anyway, o fato dele usar o lookandfeel do sistema foi apenas um chute.

Não entendi pq vc falou que dá pra usar JOptionPane (que é Swing, com AWT). É possível claro, mas tem vários efeitos colaterais.

[quote=rael_gc]Não entendi pq o botão deveria ser arredondado. Existem várias versões de Windows com lookandfeel com botão quadrado. Anyway, o fato dele usar o lookandfeel do sistema foi apenas um chute.
[/quote]

Pela barra de título o sistema é Windows XP com a aparência padrão. Logo, o look and feel do sistema terá a aparência do Windows XP (botões arredondados).

Esse é meu medo…

Entendi seu ponto de vista, e faz sentido.

Sobre o jtextfield, você está certo: realmente não retorna null. :slight_smile:

[quote=volnei]O método getText() no JTextField nunca retorna null, se vazio ele retornará a string vazia “”.

Troque o código xxxxx.getText() == null por xxxxx.getText().isEmpty()

Abraço[/quote]

Isso mesmo Volnei, brigadão!

[quote=marcobiscaro2112][quote=volnei]O método getText() no JTextField nunca retorna null, se vazio ele retornará a string vazia “”.

Troque o código xxxxx.getText() == null por xxxxx.getText().isEmpty()

Abraço[/quote]
Exatamente isso.

Agora, uma pergunta: é impressão minha ou você está usando AWT para construir a interface gráfica??[/quote]

É verdade, estou utilizando AWT. Que “efeitos colaterais” poderiam ocorrer?!

Abraço.

[quote=rael_gc]Uma coisa que você está fazendo e é estranha, é que você deve usar ActionListener e não um evento de Mouse para quando alguém clicar no botão (ou apertar a barra de espaços no mesmo quando ele estiver selecionado).
[/quote]

Não entendi. :roll:

[quote=Dil14][quote=marcobiscaro2112][quote=volnei]O método getText() no JTextField nunca retorna null, se vazio ele retornará a string vazia “”.

Troque o código xxxxx.getText() == null por xxxxx.getText().isEmpty()

Abraço[/quote]
Exatamente isso.

Agora, uma pergunta: é impressão minha ou você está usando AWT para construir a interface gráfica??[/quote]

É verdade, estou utilizando AWT. Que “efeitos colaterais” poderiam ocorrer?!

Abraço.[/quote]

Na verdade não há “efeitos colaterais”. A resposta para a pergunta: “Meu programa funcionará?” é sim. Mas existem diversas peculiaridades que fazem muito mais viável o uso de Swing (parece seu caso) ou, às vezes, SWT. Mas AWT não!

Um pouco mais sobre isso aqui, logo no primeiro tópico.

[quote=Dil14][quote=rael_gc]Uma coisa que você está fazendo e é estranha, é que você deve usar ActionListener e não um evento de Mouse para quando alguém clicar no botão (ou apertar a barra de espaços no mesmo quando ele estiver selecionado).
[/quote]

Não entendi. :roll: [/quote]

Acontece o seguinte: você adicionou um MouseListener no seu botão. Mas e se o usuário usar o teclado (com TAB para alternar o foco e espaço para pressionar)? Ele seleciona o foco no seu botão e nada vai acontecer! Isso porque, apesar de o botão ter sido pressionado, ele não foi clicado.

Para evitar esse tipo de problema, existe uma interface chamada ActionListener que reage a eventos de ação. No caso do botão, quando ele for pressionado (não importa se com o mouse, com o teclado, ou até de outra forma).

Me referi a “efeitos colaterais” no sentido de que é preciso muitas vezes recorrer a workarounds pra alguns componentes AWT funcionarem com containers Swing. Sendo que não há motivos, em uma aplicaçãozinha CRUD, pra misturar ambos.

Como o amigo acima falou, use Swing ou SWT.

Além disso, se vc misturar SWT e AWT, com certeza terá problemas (não apenas efeitos colaterais) no Linux/GTK.

[quote]Acontece o seguinte: você adicionou um MouseListener no seu botão. Mas e se o usuário usar o teclado (com TAB para alternar o foco e espaço para pressionar)? Ele seleciona o foco no seu botão e nada vai acontecer! Isso porque, apesar de o botão ter sido pressionado, ele não foi clicado.

Para evitar esse tipo de problema, existe uma interface chamada ActionListener que reage a eventos de ação. No caso do botão, quando ele for pressionado (não importa se com o mouse, com o teclado, ou até de outra forma). [/quote]

Sim, entendi. :smiley:
Brigado pela atenção.