首頁 >Java >java教程 >如何使用 SwingPropertyChangeSupport 動態更新 JTextArea?

如何使用 SwingPropertyChangeSupport 動態更新 JTextArea?

Susan Sarandon
Susan Sarandon原創
2024-11-06 03:04:02881瀏覽

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