JSpinner ActionListener alternative



在我的程序中,我想对一个数字使用JSpinner。这个数字稍后会被用来计算一些东西。每次用户单击一个微调按钮(向上或向下)时,我希望结果自动更新。因为你不能将ActionListener添加到JSpinner(我认为这真的很奇怪),我在这里问如何做类似的事情(我已经为此准备了一个ActionListener,当然可以在任何其他侦听器中更改)。

您可以将ChangeListener添加到旋转器中。这将通过按下按钮(或直接编辑字段)触发。

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

每次用户单击旋转按钮(向上或向下)时,我希望结果自动更新。

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) {}
});

这是我找到的唯一方法:

for (Component c : mySpinner.getComponents()) {
    if (c instanceof JButton) {
        ((JButton) c).addActionListener(...);
    }
    if (c instanceof JSpinner.DefaultEditor) {
        ((JSpinner.DefaultEditor) c).getTextField().addActionListener(...);
    }
}

相关内容

  • 没有找到相关文章