2013-04-26 10 views
5

W moim programie chcę użyć JSpinner dla numeru. Ta liczba będzie później używana do obliczenia czegoś. Za każdym razem, gdy użytkownik kliknie jeden z przycisków pokrętła (w górę lub w dół), chcę, aby wynik aktualizował się automatycznie. Ponieważ nie możesz dodać ActionListener do JSpinnera (co moim zdaniem jest naprawdę dziwne), pytam tutaj, jak zrobić coś podobnego do tego (mam już gotowy ActionListener, który można zmienić w dowolnym innym detektorze kierunek).JSpinner ActionListener alternative

+1

Twoja odpowiedź może być tego posta: http://stackoverflow.com/a/2553401/2319378 – LionC

Odpowiedz

6

można dodać ChangeListener do wirówki. Będzie to uruchamiane przez naciśnięcie przycisku (lub bezpośrednią edycję pola).

spinner.addChangeListener(new ChangeListener() {  
    @Override 
    public void stateChanged(ChangeEvent e) { 
    // handle click 
    } 
}); 
+0

+1, łatwiejsze niż przy użyciu DocumentListener. – camickr

1

Za każdym razem, gdy użytkownik kliknie jeden z przycisków pokrętła (w górę lub w dół), chcę, aby wynik aktualizował się automatycznie.

Dodaj DocumentListener do Document pola tekstowego, które jest używane jako edytor przędzarki.

Edit:

JSpinner.DefaultEditor editor = (JSpinner.DefaultEditor)number.getEditor(); 
JTextField textField = editor.getTextField(); 
textField.getDocument().addDocumentListener(new DocumentListener() 
{ 
    public void insertUpdate(DocumentEvent e) 
    { 
     System.out.println("insert"); 
    } 

    public void removeUpdate(DocumentEvent e) 
    { 
     System.out.println("remove"); 
    } 

    public void changedUpdate(DocumentEvent e) {} 
}); 
+0

Jak to? '((JSpinner.DefaultEditor) spinner.getEditor()). GetTextField(). GetDocument(). AddDocumentListener (nowy DocumentListener() {...}' To nie działa ... – Creator13

+0

@ Creator13, tak, to jest ogólny kod, działa dobrze dla mnie.Ale ChangeListener jest do zrobienia. – camickr