2013-04-26 9 views
5

私のプログラムでは、JSpinnerを数字に使いたいと思っています。この数値は後で何かを計算するために使用されます。ユーザーがスピナーボタンの1つ(上または下)をクリックするたびに、結果が自動的に更新されます。あなたがActionListenerをJSpinnerに追加することはできないので、私はここでこれに似た何かをする方法を尋ねています(既にActionListenerが用意されています。これは他のリスナーでも変更できます)。コース)。JSpinner ActionListener alternative

+1

あなたの回答はこの投稿かもしれない:http://stackoverflow.com/a/2553401/2319378 – LionC

答えて

6

あなたはスピナーにChangeListenerを追加することができます。これは、ボタンの押下(またはフィールドの直接編集)によってトリガーされます。

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

は、DocumentListenerを使用するよりも簡単です。 – camickr

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

このように? 動作していないようです... – Creator13

+0

@ Creator13、 '((JSpinner.DefaultEditor)spinner.getEditor())。getTextField()。getDocument()。addDocumentListener(new DocumentListener(){...}はい、それは一般的なコードです。私にとってはうまく動作します.ChangeListenerは行く方法ですが、 – camickr