java 尝试在通知中改变

标签 java swing

我有两个 swing ui 表单和一个模块,它们都会查看。
每个ui都在添加监听一个属性的变化 并在发生更改时更新自己的文本字段。

基本上 - 他们都应该更新模块并从中更新。 有没有一种简单的方法可以在没有绑定(bind)框架的情况下做到这一点

我是这样做的(但我一直在尝试在通知中改变)-

关于我的文本字段的更新

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

仍在用户界面中 - 注册更改

        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)
}

最佳答案

如果您需要在监听器中更改同一 JTextComponent 的内容,请将更改(例如 setText())包装在 SwingUtilities.invokeLater()

关于java 尝试在通知中改变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10005954/

相关文章:

JSP 页面中的 javax.el.PropertyNotFoundException

java - 为什么绘制多个对象时 JFrame 会出现故障?

java - 为什么我的 JNA 使用应用程序没有以正确的方式使用react?

java - 鼠标释放时删除带有颜色的矩形

java - ACM 交互器卡住

java - 在一个 jlabel 中显示数组值

java - HttpURLConnection 的响应与curl 响应不同

java - 使用外部jar文件编译并运行

java - 在外部类中创建 JTabbedPane

java - 带有java和字符串变量的指针