Java JSpinner ActionListener替代方案

Java JSpinner ActionListener替代方案,java,swing,event-handling,awt,Java,Swing,Event Handling,Awt,在我的程序中,我想使用一个JSpinner来表示一个数字。这个数字稍后将被用来计算一些东西。每次用户单击一个微调器按钮(向上或向下),我都希望结果自动更新。由于您无法将ActionListener添加到JSpinner(我认为这真的很奇怪),因此我在这里询问如何执行类似的操作(我已经准备好了一个ActionListener,当然可以在任何其他侦听器中进行更改) 每次用户单击微调器按钮之一(向上或向下),我都希望结果自动更新 将DocumentListener添加到用作微调器编辑器的文本字段的Do

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

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

DocumentListener
添加到用作微调器编辑器的文本字段的
Document

编辑:

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


像这样<代码>((JSpinner.DefaultEditor)spinner.getEditor()).getTextField().getDocument().addDocumentListener(new DocumentListener(){…}它似乎不起作用…@Creator13,是的,这是一般代码。对我来说很好。尽管ChangeListener是一种方法。你的答案可能是以下帖子:
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) {}
});
spinner.addChangeListener(new ChangeListener() {      
  @Override
  public void stateChanged(ChangeEvent e) {
    // handle click
  }
});