简体   繁体   English

Java JSpinner实时变化监听器

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM