Java: controlla se JTextField è vuoto o meno

Quindi ho capito che questa è una domanda popolare e ho già trovato la soluzione. Ma quando provo questo non funziona correttamente.

My JTextField è vuoto e il pulsante non è abilitato. Quando scrivo qualcosa nel mio campo di testo, il pulsante non viene abilitato.

Quindi il mio programma dovrebbe controllare questo campo ogni secondo se è vuoto o no. Non appena qualcuno scrive qualcosa nel campo di testo, il pulsante dovrebbe essere abilitato. ^^

loginbt = new JButton("Login"); loginbt.addActionListener(new loginHandler()); add(loginbt); if(name.getText().equals("")) { loginbt.setEnabled(false); }else { loginbt.setEnabled(true); } 

Per questo è necessario aggiungere listener di modifiche (un DocumentListener che reagisce per la modifica nel testo) per JTextField e all’interno di actionPerformsd() , è necessario aggiornare il loginButton su enabled / disabled a seconda che JTextfield sia vuoto o meno.

Di seguito è quello che ho trovato da questo thread .

 yourJTextField.getDocument().addDocumentListener(new DocumentListener() { public void changedUpdate(DocumentEvent e) { changed(); } public void removeUpdate(DocumentEvent e) { changed(); } public void insertUpdate(DocumentEvent e) { changed(); } public void changed() { if (yourJTextField.getText().equals("")){ loginButton.setEnabled(false); } else { loginButton.setEnabled(true); } } }); 

Quanto segue restituirà true se il “nome” di JTextField non contiene testo:

name.getText().isEmpty

Quello di cui hai bisogno è qualcosa chiamato Listener di documenti. Vedi Come scrivere un listener di documenti .

Bene, il codice che rende il pulsante abilitato / disabilitato:

 if(name.getText().equals("")) { loginbt.setEnabled(false); }else { loginbt.setEnabled(true); } 

deve essere scritto in javax.swing.event.ChangeListener e allegato al campo (vedi qui ). Una modifica del valore del campo dovrebbe far sì che l’ascoltatore rivaluti lo stato dell’object. Cosa ti aspettavi?

Controllare che JTextFiled sia vuoto o no:

 if( (billnotf.getText().length()==0)||(billtabtf.getText().length()==0)) 

usa il seguente codice:

 if(name.getText().equals("")) { loginbt.disable(); } 

Prova questo

 if(name.getText() != null && name.getText().equals("")) { loginbt.setEnabled(false); } else { loginbt.setEnabled(true); } 
 if(name.getText().hashCode() != 0){ JOptionPane.showMessageDialog(null, "not empty"); } else{ JOptionPane.showMessageDialog(null, "empty"); } 

Prova con keyListener nel tuo campo di testo

 jTextField.addKeyListener(new KeyListener() { @Override public void keyTyped(KeyEvent e) { } @Override public void keyPressed(KeyEvent e) { if (text.getText().length() >= 1) { button.setEnabled(true); } else { button.setEnabled(false); } } @Override public void keyReleased(KeyEvent e) { } });