我在左边设置了一个tree,右边是table
我的想法是当用户单击树的节点时,右面切换到相应的选项卡,怎么实现啊????
最好附上源码ps:我试了很多种方法都不行,我的想法是:当用户单击节点时,取得被单击的节点名(toString方法).然后,用setEnabledAt方法显示具有相同名称的选项卡
可是不行啊!!!!!!!!!
我的想法是当用户单击树的节点时,右面切换到相应的选项卡,怎么实现啊????
最好附上源码ps:我试了很多种方法都不行,我的想法是:当用户单击节点时,取得被单击的节点名(toString方法).然后,用setEnabledAt方法显示具有相同名称的选项卡
可是不行啊!!!!!!!!!
void setSelectedComponent(Component c)
设置此选项卡窗格的已选组件。
void setSelectedIndex(int index)
设置所选择的此选项卡窗格的索引。
而不是用setEnabledAt
private JTabbedPane pane = null;
public Test(){
DefTreeNode root = new DefTreeNode("Test", 0);
tree = new JTree(root);
tree.setRootVisible(true);
root.add(new DefTreeNode("Test1",1));
root.add(new DefTreeNode("Test2",2));
tree.addTreeSelectionListener(new TreeSelectionListener(){
public void valueChanged(TreeSelectionEvent e) {
DefTreeNode node = (DefTreeNode) tree.getSelectionPath().getLastPathComponent();
int index = node.getIndex();
pane.setSelectedIndex(index);//要做判断
}
});
this.getContentPane().add(tree,BorderLayout.WEST);
pane = new JTabbedPane();
pane.add("Root", new JPanel());
pane.add("Test1", new JPanel());
pane.add("Test2", new JPanel());
this.getContentPane().add(pane);
}
private class DefTreeNode extends DefaultMutableTreeNode{
private int index = 0;;
protected DefTreeNode(Object userObject, int index) {
super(userObject);
this.index = index;
}
public int getIndex(){
return index;
}
}
public static void main(String[] args){
Test t = new Test();
t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
t.setSize(new Dimension(100,100));
t.setVisible(true);
}
}
简单实现,使用TreeSelection监听的问题是,只有当Tree节点选中发生变化时才通知。当选中右边的选项卡选择发生变化,在左边树点击当前节点,不会跳转。 建议修改监听类型(比如MouseListener)