首页  >  文章  >  Java  >  如何使用 SwingPropertyChangeSupport 动态更新 JTextArea?

如何使用 SwingPropertyChangeSupport 动态更新 JTextArea?

Susan Sarandon
Susan Sarandon原创
2024-11-06 03:04:02807浏览

How to Dynamically Update JTextArea Using SwingPropertyChangeSupport?

使用 SwingPropertyChangeSupport 动态更新 JTextArea

在您的代码片段中,您面临一个问题,即表示数组的 JTextArea 不使用输入对话框进行修改后更新。出现这种情况是因为您没有正确通知 SwingPropertyChangeSupport 属性已更改。

要解决此问题,让我们修改 ArrayForUpdating 类:

<code class="java">public class ArrayForUpdating {
    // Existing code...

    public void setArrayData(int a, int memData) {
        // Existing code...

        // Fire the property change event
        setArrayyDisplayString();
        firePropertyChange(BOUND_PROPERTY, oldValue, newValue);
    }
}</code>

在 setArrayData 方法中,更新数组并生成新的显示字符串,我们现在使用 firePropertyChange 显式触发属性更改事件。这会通知所有注册的侦听器 BOUND_PROPERTY 已被修改。

通过以这种方式更新属性,GuiForUpdate 类将收到更改通知,并相应地更新 JTextArea。

这里是更新了 GuiForUpdate 类:

<code class="java">public class GuiForUpdate extends JFrame implements ActionListener {

    // Existing code...

    /**
     * Adds a display area for array
     */
    public void layoutDisplay() {
        // Existing code...

        arrayForUpdate.addPropertyChangeListener(new PropertyChangeListener() {

            @Override
            public void propertyChange(PropertyChangeEvent pcEvt) {
                if (pcEvt.getPropertyName().equals(
                        ArrayForUpdating.BOUND_PROPERTY)) {
                    mList = (pcEvt.getNewValue().toString());
                    displayOutput.setText(mList);
                }
            }
        });
    }
}</code>

在layoutDisplay 方法中,我们更新了属性更改侦听器,以便在 BOUND_PROPERTY 更改时更新 displayOutput 文本区域。

通过合并这些更改,JTextArea现在将动态反映通过输入对话框对数组所做的任何修改。

以上是如何使用 SwingPropertyChangeSupport 动态更新 JTextArea?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn