7

在我的程序中,我想使用一个 JSpinner 来表示一个数字。这个数字稍后将用于计算某些东西。每次用户单击其中一个微调器按钮(向上或向下)时,我都希望结果自动更新。由于您无法将 ActionListener 添加到 JSpinner (我认为这很奇怪),我在这里问如何做类似的事情(我已经为此准备好了 ActionListener,可以在任何其他侦听器中更改课程)。

4

2 回答 2

10

您可以ChangeListener在微调器中添加一个。这将由按下按钮(或直接编辑字段)触发。

spinner.addChangeListener(new ChangeListener() {      
  @Override
  public void stateChanged(ChangeEvent e) {
    // handle click
  }
});
于 2013-04-26T19:41:03.293 回答
3

每次用户单击一个微调器按钮(向上或向下)时,我希望结果自动更新。

在用作微调器编辑器的文本字段中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) {}
});
于 2013-04-26T19:33:08.027 回答