wood burning stoves*
The moose likes Swing / AWT / SWT and the fly likes Loading and unloading panels on one side of JSplitPane Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login
JavaRanch » Java Forums » Java » Swing / AWT / SWT
Bookmark "Loading and unloading panels on one side of JSplitPane " Watch "Loading and unloading panels on one side of JSplitPane " New topic
Author

Loading and unloading panels on one side of JSplitPane

Darrell Morello
Ranch Hand

Joined: Apr 28, 2005
Posts: 38
Hi all

I'm trying to create an application where on one side of a JSplitPane is the navigation and on the other side panels are loaded.

For example, on the left side, when i click Add Item, on the right side the panel that is for adding an item is displayed. If I click Options on the left side, the Add Item panel is unloaded from memory and the Options panel is loaded. I dont want to use CardLayout because I may have to use as many as 50 panels. Each panel is a different class.

The navigation is also also on a panel that is on the left side of the JSplitPane. On the right side also there is a panel which loads other external panels into it.

So how do I give command to the right side panel to load a specific panel? Any links to example applications with source also really appreciated.

Thanks
Ken Blair
Ranch Hand

Joined: Jul 15, 2003
Posts: 1078
The "left" panel is going to have a listener of some sort that fires when the user selects something. More than likely this is an ActionListener, ListSelectionListener, TreeSelectionListener or something similar. Regardless of the listener, once you've detected the change all you need to do is retrieve the appropriate JPanel and change the right component by invoking setRightComponent(Component) on the JSplitPane.

For example:



Though I would consider that bad form in many ways, hopefully you get the idea.
 
It is sorta covered in the JavaRanch Style Guide.
 
subject: Loading and unloading panels on one side of JSplitPane