3

私は 2 つのスイング UI フォームと 1 つのモジュールを持っています。
各 UI は、属性の変更にリスナーを追加し、変更が発生したときに独自のテキスト フィールドを更新します。

basiccaly - どちらもモジュールを更新し、それから更新する必要があります。バインディングフレームワークなしでそれを行う簡単な方法はありますか

これが私が行う方法です(ただし、通知で変異を試み続けます)-

私のtextFieldの更新について

 myTextField.getDocument().addDocumentListener(new TFDocumentListener() {
            protected void userChangedTF() {
                Float value = myTextField.getValue();
                if (value != null) {
                    myObj.setMyAttribute(value);
                }
            }
        });

まだUIにあります - 変更を登録しています

        myObj.addMyAttributeChangedListener(new ValueChangeListener<Float>() {
            @Override public void valueChanged(Float value) {
                if (!myTextField.isFocusOwner()) {
                    myTextField.setValueIn(value);
                }
            }
        });

モジュール内 - setMyAttribute が発生すると - この関数を呼び出します

private void notifyIntervalChanged(float newValue) {
    for (ValueChangeListener valueChangeListener : intervalChangedListenersList) {
        valueChangeListener.valueChanged(newValue);
    }
}

と私は宣言しました

public interface ValueChangeListener<T> {
     void valueChanged(T Value)
}
4

1 に答える 1

14

リスナーで同じ内容を変更する必要がある場合はJTextComponent、変更 (setText() など) をSwingUtilities.invokeLater()

于 2012-04-04T06:49:35.250 に答える