TextField sprawdzanie czy pojawił się znak

TextField sprawdzanie czy pojawił się znak
CZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Witam, w ramach nauki tworze prosty kalkulator.

Znaki można wprowadzać na 2 sposoby, albo z klawiatury, albo poprzez JButtony.
Chce aby kalkulator zaczął działać(obliczać) w momencie pojawienia się w TextFieldzie znaku równości.
Jak takie sprawdzenie zrobić?

Myślałem nad dodaniem KeyListenera do TextFielda i ActionListenera do przycisku reprezentującego znak równości.
Ale czy takie rozwiązanie jest elegancki? Czy można dodać jedynie listenera który będzie sprawdzał czy pojawił się w TextFieldzie znak =, i jak miałoby to wyglądać?

Pozdrawiam :)

  • Rejestracja: dni
  • Ostatnio: dni
0

Ale w czym to robisz Swing, JavaFX, Android ?

Takie rzeczy robi się na eventach generalnie (twojej kontrolki do edycji danych).

CZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

W Swingu :)

  • Rejestracja: dni
  • Ostatnio: dni
0

Tu masz prosty przykład z SO:

Kopiuj
// Listen for changes in the text

textField.getDocument().addDocumentListener(new DocumentListener() {
  public void changedUpdate(DocumentEvent e) {
    warn();
  }
  public void removeUpdate(DocumentEvent e) {
    warn();
  }
  public void insertUpdate(DocumentEvent e) {
    warn();
  }

  public void warn() {

   // Tu dajesz kod, jeśli dane w oknie edycyjnym są nieprawidłowe...

     }
  }
});
CZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Dzięki za podpowiedz, ale nie za bardzo rozumiem jak miałoby to działać.

bogdans
  • Rejestracja: dni
  • Ostatnio: dni
1

Sprecyzuj zwrot

w momencie pojawienia się w TextFieldzie znaku równości
Wystarczy by użytkownik nacisnął klawisz ze znakiem "=", czy musi go jeszcze puścić?

Kopiuj
tf.addKeyListener(new keyAdapter()
{
     public void keyPressed(KeyEvent ke)
     {
         if(if(ke.getKeyCode() == KeyEvent.VK_EQUALS)
         {
             compute();
         }
     }
});

Powyższy kod zacznie liczyć po naciśnięciu klawisza "=", jeśli liczenie ma się zacząć po puszczeniu to zamień metodę keyPressed na keyReleased.

CZ
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 12
0

Wielkie dzięki :) Wszystko działa

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.