[英]Java JSpinner real-time change listener
I have change listener, which prints value only if command1RepeatTime
JSpinner loss focus.我有更改侦听器,仅当
command1RepeatTime
JSpinner 失去焦点时才打印值。 I want to print command1RepeatTime
int value after changing value by pressing arrows or typing value in JSpinner (don't need to loss focus).我想通过按箭头或在 JSpinner 中键入值更改值后打印
command1RepeatTime
int 值(不需要失去焦点)。
code:代码:
command1RepeatTime.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
JSpinner spinner = (JSpinner) e.getSource();
SpinnerModel spinnerModel = spinner.getModel();
System.out.println(spinnerModel.getValue());
}
});
I found answer:我找到了答案:
JComponent comp = spinner.getEditor();
JFormattedTextField field = (JFormattedTextField) comp.getComponent(0);
DefaultFormatter formatter = (DefaultFormatter) field.getFormatter();
formatter.setCommitsOnValidEdit(true);
spinner.addChangeListener(new ChangeListener() {
@Override
public void stateChanged(ChangeEvent e) {
System.out.println("value changed: " + spinner.getValue());
}
});
The answer is to configure the formatter used in the JFormattedTextField which is a child of the spinner's editor:
formatter.setCommitsOnValidEdit(true);
答案是配置 JFormattedTextField 中使用的格式化程序,它是微调器编辑器的子项:
formatter.setCommitsOnValidEdit(true);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.