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