1

我正在浏览一个使用 Swing 的遗留应用程序,我正在努力弄清楚当用户单击按钮时屏幕是如何变化的。我无法弄清楚的原因之一是因为这是我第一次使用 Swing。我读过一本书并掌握了基础知识,但仍在苦苦挣扎。

基本上,我正在查看的屏幕有一个 JSplitPane,左侧有许多快捷按钮,右侧有一个空窗格。当我单击按钮时,右侧窗格会根据按下的按钮填充不同的屏幕。

通过代码,我期待在某个地方会根据按下的按钮调用 setVisible() 方法。

每个快捷按钮的 actionPerformed 方法如下所示:

void shortCutBtn_actionPerformed(ActionEvent e) {
   propertyChangeListeners.firePropertyChange("selectedShortCut", previousShortCutSel, currentShortCutSel);
   mainPanel.updateUI();
  }

我浏览了大部分代码并得出结论,上面的代码是导致帧切换的原因,但我不明白这是怎么发生的。

每个屏幕由一个数字常量标识。在上面的代码示例中,previousShortCutSel 和 previousShortCutSel 指的是代表各个屏幕屏幕的数值。

我试图寻找有关 updateUI() 如何工作的文档,但我迷路了。以上如何导致 JSplitPanel 右侧面板的内容更新为新屏幕?

4

2 回答 2

9

这不适合使用updateUI()“将 UI 属性重置为当前外观的值”。由于示例本身可能不可靠,请考虑研究另一个示例。GoogleOlympiad,例如,使用(缓存的)图像设置标签的图标。

ImageIcon image = getImage(index);
imageLabel.setIcon(image);

图片
(来源:sites.google.com 上的 drjohnbmatthews

于 2012-10-14T18:45:38.307 回答
3

根据 ziggy 的评论(很高兴它有帮助)

看看PropertyChangeListener似乎添加在代码中的 s。特别是该propertyChange(PropertyChangeEvent e)方法是更改​​内容的代码将出现的地方。

像往常一样为垃圾神+1好例子/建议

于 2012-10-14T20:57:41.440 回答