在jFormattedTextField上放置"On Change"监听器

RYN*_*RYN 10 java events swing listen jformattedtextfield

我的程序中有一个jFormattedTextField,当jFormattedTextField值有效更改时,我需要更新jLabel的文本.
实际上jFormattedTextField获取一个数字,jLabel在这个数字和另一个数字之间显示差异.
我目前通过听jFormatted文本的"FocusLost"事件来做到这一点.

我怎样才能做到这一点?

kle*_*tra 14

将属性"value"的PropertyChangeListener注册到formattedField

    PropertyChangeListener l = new PropertyChangeListener() {

        @Override
        public void propertyChange(PropertyChangeEvent evt) {
            String text = evt.getNewValue() != null ? evt.getNewValue().toString() : "";
            label.setText(evt.getNewValue());
        }
    };
    formattedTextField.addPropertyChangeListener("value", l);
Run Code Online (Sandbox Code Playgroud)

不要使用DocumentListener,也不要使用FocusListener:前者经常被通知(在解析发生之前,每个关键字都被通知),后者太脆弱了.