SwingPropertyChangeSupport for Dynamic JTextArea Updates
问题描述:
目标是动态更新JTextArea 的内容基于输入对话框中所做的更改。输入并确认后,数组会正确更新,但 GUI 不会反映修改。
代码概述:
提供的代码利用 SwingPropertyChangeSupport 来促进财产变更事件。使用 arrayForUpdate.instructionsIn(newValue, a) 更新数组,其中 newValue 是修改后的输入,a 是数组索引。
问题排查:
之后检查代码,问题似乎出在 ArrayForUpdating 类中的 setBoundProperty 方法中。
<code class="java">public void setBoundProperty(String boundProperty) { String oldValue = this.boundProperty; System.out.println("old = " + oldValue); String newValue = boundProperty; System.out.println("new = " + newValue); this.boundProperty = newValue; spcSupport.firePropertyChange(BOUND_PROPERTY, oldValue, newValue); }</code>
setBoundProperty 方法的问题是使用不正确的参数调用 firePropertyChange 方法。受影响的代码标记如下:
<code class="java"> spcSupport.firePropertyChange(BOUND_PROPERTY, oldValue, newValue);</code>
在此特定情况下,firePropertyChange 的正确用法为:
<code class="java"> spcSupport.firePropertyChange(BOUND_PROPERTY, boundProperty, newValue);</code>
应用更正后,以下代码准确反映了修改片段:
<code class="java">public void setBoundProperty(String boundProperty) { String oldValue = this.boundProperty; System.out.println("old = " + oldValue); String newValue = boundProperty; System.out.println("new = " + newValue); this.boundProperty = newValue; spcSupport.firePropertyChange(BOUND_PROPERTY, oldValue, newValue); }</code>
摘要:
通过对 setBoundProperty 方法进行此调整,可以正确建立数组和 JTextArea 之间的绑定过程。因此,GUI 现在将成功反映通过输入对话框所做的任何更改。
以上是如何正确使用 SwingPropertyChangeSupport 进行动态 JTextArea 更新?的详细内容。更多信息请关注PHP中文网其他相关文章!