JSpinner价值变动事件 [英] JSpinner Value change Events

查看:158
本文介绍了JSpinner价值变动事件的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

  ChangeListener listener = new ChangeListener(){
public void stateChanged(ChangeEvent e){
jLabel.setText(e.getSource());
}
};

spinner1.addChangeListener(listener);

上面的代码不会自动更改标签文本,它需要您再次点击anyplace进行更新。

解决方案

答案是配置JFormattedTextField中使用的格式化器,JFormattedTextField是微调器编辑器的一个子代:

  formatter.setCommitsOnValidEdit(true); 

不幸的是,把手放在与介绍性句子一样长和肮脏:

  final JSpinner spinner = new JSpinner(); 
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){
LOG.info(value changed:+ spinner .getValue());
}
});

一个稍微(但不是很多)更清洁的方法可能是子类化NumberEditor并公开一个允许配置


How to make the update immediately when the jSpinner value was changed.

ChangeListener listener = new ChangeListener() {
  public void stateChanged(ChangeEvent e) {
    jLabel.setText(e.getSource());
  }
};

spinner1.addChangeListener(listener);

The code above doesnt change the label text automatically, it required you to click again anyplace to update.

解决方案

The answer is to configure the formatter used in the JFormattedTextField which is a child of the spinner's editor:

    formatter.setCommitsOnValidEdit(true);

Unfortunately, getting one's hand on it is as long and dirty as the introductory sentence:

    final JSpinner spinner = new JSpinner();
    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) {
            LOG.info("value changed: " + spinner.getValue());
        }
    });

A slightly (but not by much) cleaner way might be to subclass NumberEditor and expose a method which allows the config

这篇关于JSpinner价值变动事件的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆