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