Swing - Changing the content of a panel using UpdateUI

岁酱吖の 提交于 2019-11-28 10:52:30

问题


I am going through a legacy application which is using Swing and i am struggling to figure out how the screens are changing when a user clicks a button. One of the reasons i cant figure this out is because this is the first time i am using Swing. I have read a book and got the basics but still struggling.

Basically, the screen i am looking at has a JSplitPane which has a number of shortcut buttons on the left and an empty pane on the right. When i click on the button, the right side pane is populated with a different screen depending on the button pressed.

Going through the code, i was expecting somewhere that there will be something that calls a setVisible() method depending on which button is pressed.

The actionPerformed method for each of the shortcut buttons looks something like this:

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

I have gone through most of the code and came to a conclusion that the above code is what is causing the frame switching but i dont understand how that is happening.

Each screen is identified by a numeric constant. In the above code example, previousShortCutSel and previousShortCutSel refer to a numeric value that represents individual screens screen.

I have tried to look for documentation of how updateUI() works but i am lost. How does the above cause the content of the right panel of the JSplitPanel to be updated with a new screen?


回答1:


As per comments by ziggy (glad it helped)

Have a look at the PropertyChangeListeners that appear to be added in the code. In particular the propertyChange(PropertyChangeEvent e) method is where the code which changes the content will be present.

+1 to trashgod nice example/advice as always




回答2:


This is not an appropriate use of updateUI(), which "Resets the UI property to a value from the current look and feel." As the example itself may be unreliable, consider studying another. GoogleOlympiad, for example, sets a label's icon using a (cached) image.

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


(source: drjohnbmatthews at sites.google.com)



来源:https://stackoverflow.com/questions/12884972/swing-changing-the-content-of-a-panel-using-updateui

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!