2013-04-26 118 views
5

在我的程序中,我想爲一個數字使用JSpinner。這個數字稍後會被用來計算一些東西。每次用戶點擊其中一個微調按鈕(向上或向下)時,我都希望自動更新結果。由於您無法將ActionListener添加到JSpinner中(我認爲這很奇怪),所以我在這裏問如何做類似於此的事情(我已經有一個ActionListener準備好了,可以在任何其他監聽器中進行更改課程)。JSpinner ActionListener備選

+1

你的答案可能是這個職位:http://stackoverflow.com/a/2553401/2319378 – LionC 2013-04-26 19:15:20

回答

6

你可以添加一個ChangeListener的微調。這將通過按下按鈕(或直接編輯該字段)來觸發。

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

+1,比使用DocumentListener更容易。 – camickr 2013-04-26 19:57:47

1

每次用戶點擊其中一個微調按鈕(向上或向下)時,我都希望結果自動更新。

DocumentListener添加到正在用作微調控件編輯器的文本字段的Document

編輯:

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

喜歡這個? (){(JSpinner.DefaultEditor)spinner.getEditor())。getTextField()。getDocument()。addDocumentListener(new DocumentListener(){...}' 它似乎不工作... – Creator13 2013-04-26 19:43:20

+0

@ Creator13,是的,這是通用代碼,對我來說工作很好,雖然ChangeListener是要走的路, – camickr 2013-04-26 19:59:00