2016-03-31 12 views
1

Ich habe einen DocumentListener zu einer jTextArea hinzugefügt, die eine Schaltfläche deaktiviert sollte immer wenn die textArea leer ist. Dies funktioniert nur am Anfangspunkt, wenn der textArea leer ist, aber wenn ich etwas eintippe und dann den gesamten Text bis textArea.getText() == "" lösche, wird die Schaltfläche immer noch nicht wieder deaktiviert. Das ist, was ich schrieb:Schaltfläche wird nicht deaktiviert, wenn textArea leer ist

textArea.getDocument().addDocumentListener(new DocumentListener() { 
      @Override 
      public void insertUpdate(DocumentEvent e) { 

       if (textArea.getText() == null) { 
        disableButton(); 
       } else { 
        enableButton(); 
       } 



      } 

      @Override 
      public void removeUpdate(DocumentEvent e) { 

       if (textArea.getText() == null) { 
        disableButton(); 
       } else { 
        enableButton(); 
       } 

      } 

      @Override 
      public void changedUpdate(DocumentEvent e) { 

       if (textArea.getText() == null) { 
        disableButton(); 
       } else { 
        enableButton(); 
       } 
      } 

      public void enableButton() { 
       clearModelMenuItem.setEnabled(true); 
       discardModel.setEnabled(true); 
       increaseFontSize.setEnabled(true); 
       decreaseFontSize.setEnabled(true); 
       incMenuItem.setEnabled(true); 
       decMenuItem.setEnabled(true); 
      } 

Was ist das Problem hier? Danke für Ihre Hilfe!

+0

Änderung 'textArea.getText() == null' auf' textArea.getText(). IsEmpty() ' – Jerry06

+1

' Was ist das Problem hier? ' - Wo ist dein SSCCE, wie du in vielen deiner vorherigen Fragen gefragt wurdest ??? Wo ist Ihr Debug-Code, der den Wert der Variablen anzeigt, die Sie testen, wie Sie in früheren Fragen gefragt wurden? Machen Sie Ihr eigenes grundlegendes Debugging, BEVOR Sie eine Frage stellen. – camickr

Antwort

3

Es liegt daran, dass Sie nicht überprüfen, ob der Text leer ist. Sie überprüfen, ob es null ist. Es gibt einen Unterschied zwischen String, der leer ist und String das ist null.

Sie benötigen

if ("".equals(textArea.getText())) ... 

prüft werden, wenn Sie wollen, um zu überprüfen, ob es leer ist.

(Sie möchten vielleicht auch für null überprüfen.)

Verwandte Themen