2013-06-16 29 views
15

Tak więc wiem, że jest to popularne pytanie i już znalazłem rozwiązanie. Ale kiedy próbuję tego, to nie działa poprawnie.Java - Sprawdź, czy JTextField jest pusty czy nie

Moja JTextField jest pusta, a przycisk nie jest włączony. Kiedy piszę coś w moim polu tekstowym, przycisk nie zostaje włączony.

Tak więc mój program powinien sprawdzać to pole co sekundę, czy jest pusty, czy nie. Tak szybko, jak ktoś pisze coś w polu tekstowym przycisk powinien być włączony. ^^

loginbt = new JButton("Login"); 
    loginbt.addActionListener(new loginHandler()); 
    add(loginbt); 

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

BTW, użyję 'loginbt.setEnabled (name.getText() długość ()! = 0); ' – johnchen902

Odpowiedz

25

Do tego trzeba dodać zmiany słuchacza (A DocumentListener który reaguje na zmiany w tekście) za JTextField iw ciągu actionPerformed() , musisz zaktualizować loginButton, aby włączyć/wyłączyć w zależności od tego, czy JTextfield jest pusty, czy nie.

Poniżej znajduje się to, co znalazłem z tego 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); 
    } 

    } 
}); 
+0

Chciałem zapytać, czy procedura się zmieni, jeśli przycisk będzie zależał od więcej niż jednego pola tekstowego. Czy użyłbym tej samej logiki do zdefiniowania akcji, czy jest jakiś inny sposób z mniejszym kodem? Dziękuję za Twój czas!! –

+0

Następnie tworzysz jedną implementację 'DocumentListener', która obsługuje ten przycisk i dodaje je jako detektory do wszystkich pól tekstowych? – sanbhat

+0

yes..thanks..Nie pamiętam podstawowych rzeczy: [jak pisać dokumenty słuchacza] (http://docs.oracle.com/javase/tutorial/uiswing/events/documentlistener.html) –

3

Cóż, kod, który renderuje przycisk włączony/wyłączony:

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

musi być napisana w javax.swing.event.ChangeListener i dołączony do pola (patrz here). Zmiana wartości pola powinna skłonić odbiorcę do ponownej oceny stanu obiektu. Czego oczekiwałeś?

-1

Spróbuj z KeyListener w polu tekstowym

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

    }); 
+1

-1 Preferowanym podejściem jest DocumentListener . Rzadko istnieje powód do korzystania z KeyListener. To jest stary projekt przy użyciu AWT. Również kod nie zadziałałby tak, ponieważ do dokumentu nie dodano żadnego tekstu, gdy generowane jest zdarzenie keyPressed, więc długość będzie nadal wynosić 0, gdy zostanie wywołane pierwsze zdarzenie. – camickr

+1

Dzięki za poprawkę, zobaczę DocumentListener w przyszłości – Nikos

0

Spróbuj

if(name.getText() != null && name.getText().equals("")) 
{ 
     loginbt.setEnabled(false); 
} 
else 
{ 
     loginbt.setEnabled(true); 
} 
2

Aby sprawdzić JTextFiled jest pusta lub nie warunek:

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

użyć następującego kodu:

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

Poniższa zwróci true, jeśli "nazwa" JTextField nie zawiera tekstu.

name.getText().isEmpty

+0

dzięki! to było przydatne – Navaro

0
if(name.getText().hashCode() != 0){ 
    JOptionPane.showMessageDialog(null, "not empty"); 
} 
else{ 
    JOptionPane.showMessageDialog(null, "empty"); 
} 
+0

Zimno proszę wyjaśnić, dlaczego uważasz, że to jest rozwiązanie? – Trinimon

Powiązane problemy