在我的程序中,我想对一个数字使用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(...);
}
}