Zolf
asked on
help with JTree and JTabbedPane
Hello there,
I have a Jtree which gets populated from the database.on the right side i have 3 JTabbedPane which contains JTable inside it.the table also gets populated from the DB.Nowwhen i click on the nodes,the tabpane do not change,i have attached my code which does most of the bits,so experts can tell me what i am missing or doing wrong
for example.
JTree JTabbedPane
-xxx xxx yyy zzz
-yyy
-zzz
public class Policy extends JInternalFrame implements ActionListener, TreeSelectionListener
{
Frame JFParentFrame;
Dimension screen = Toolkit.getDefaultToolkit(
//private DynamicTree treePanel;
//private static final String SWITCH = "Switch";
private JScrollPane treeScroll;
private DefaultMutableTreeNode dbNode; // Root node for the database tree
private DefaultTreeModel dbTreeModel;
DefaultMutableTreeNode tableNode,tableNode1,table
private JTree dbTree;
private JPanel pN;
private CardLayout layoutMgr;
//private JSplitPane split;
JPanel cityPanel;
JPanel coPanel;
JPanel dslamPanel;
JPanel linecardPanel;
Connection conn;
Statement state;
Statement state1;
Statement state2;
Statement state3;
String tableName;
class TreeListener implements TreeSelectionListener
{
public void valueChanged(TreeSelection
{
handleTreeSelection();
}
}
private void handleTreeSelection()
{
Object node = dbTree.getLastSelectedPath
if (node == null || !(node instanceof TreeNode) || node.toString() == null)
return;
System.out.print(node.toSt
layoutMgr.show(pN, node.toString());
}
public Policy(JFrame getParentFrame)
{
super("Records",false,true
cityPanel = new JPanel();
coPanel = new JPanel();
dslamPanel = new JPanel();
linecardPanel = new JPanel();
JFParentFrame = getParentFrame;
//treePanel = new DynamicTree();
String[] switchTabs = { "City", "Co", "DSLAM", "Line Card" };
JPanel[] switchPanels = { cityPanel, coPanel, dslamPanel, linecardPanel};
JTabbedPane switchPane = createNodePane(switchTabs,
//populateTree(treePanel);
//Container c = this.getContentPane();
//c.add( treePanel, BorderLayout.WEST );
layoutMgr = new CardLayout();
pN = new JPanel(layoutMgr);
pN.setPreferredSize(new Dimension(200, 200));
pN.add(switchPane, "tableName");
dbNode = new DefaultMutableTreeNode("No
dbTreeModel = new DefaultTreeModel(dbNode);
dbTree = new JTree(dbTreeModel);
//dbTree.addTreeSelectionL
dbTree.addTreeSelectionLis
treeScroll = new JScrollPane(dbTree);
//Add the scroll panes to a split pane.
JSplitPane splitPane = new JSplitPane(JSplitPane.HORI
splitPane.setLeftComponent
splitPane.setRightComponen
Dimension minimumSize = new Dimension(100, 50);
//pN.setMinimumSize(new Dimension(0, 0));
treeScroll.setMinimumSize(
splitPane.setDividerLocati
//treeView.setPreferredSiz
splitPane.setPreferredSize
String query = "select * from city ORDER BY CITY_ID";
JDBCAdapter dt = new JDBCAdapter(url, driver, userid, pass);
dt.executeQuery(query);
// Create the table
JTable tableView = new JTable(dt);
JScrollPane scrollpane = new JScrollPane(tableView);
scrollpane.setPreferredSiz
cityPanel.add(scrollpane);
getContentPane().add(split
//c.add( splitPane, BorderLayout.WEST );
setSize(747,450);
setLocation((screen.width - 747)/2,((screen.height-450
setFrameIcon(new ImageIcon("images/customer
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
ASKER
what should i do now.
the method createNodePane(switchTabs,
private static JTabbedPane createNodePane(String[] tabs, Component[] items)
{
// assume that tabs and items have the same
// length and contain no null values
JTabbedPane tp = new JTabbedPane();
tp.setPreferredSize(new Dimension(200, 200));
for (int i = 0; i < tabs.length; i++)
tp.addTab(tabs[i], items[i]);
return tp;
}
ASKER
Thanks mate, made that thing to work.can you'll suggest me how can i change the tabs based on the nodes.i mean if i click on the yyy
JTree JTabbedPane
-xxx xxx yyy zzz
-yyy
-zzz
yyy node the yyy tab should be shown,then again if i click the xxx node the tab should go back to the xxx tab.same thing goes for the zzz nodes.
you need to keep something like a map of node text -> tab component
and use the setSelectedComponent method
and use the setSelectedComponent method
ASKER
hi objects,
could you please explain in more details or help me modify my code above to make it work.