使用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中文網其他相關文章!