Java JSpinner实时更改侦听器

Java JSpinner实时更改侦听器,java,swing,Java,Swing,我有change listener,它只在command1RepeatTimeJSpinner失去焦点时才打印值。我想在按箭头或在JSpinner中键入value更改值后打印command1RepeatTimeint值(不需要失去焦点) 代码: 我找到了答案: JComponent comp = spinner.getEditor(); JFormattedTextField field = (JFormattedTextField) comp.getCompon

我有change listener,它只在
command1RepeatTime
JSpinner失去焦点时才打印值。我想在按箭头或在JSpinner中键入value更改值后打印
command1RepeatTime
int值(不需要失去焦点)

代码:

我找到了答案:

        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());
            }
        });
答案是配置JFormattedTextField中使用的格式化程序,JFormattedTextField是微调器编辑器的子项:
formatter.setCommitsonValidIt(true)


似乎有一些建议,你试过了吗?
        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());
            }
        });