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) { } });