Java桌面程序,左边是树——我用的是JTree,点击不同节点在树的右边显示不同内容,怎么做到?请知道的务必帮帮忙,谢谢!!!

解决方案 »

  1.   

    你那边面板可以用JLayoutPanel,他是以一个层显示的。在点击树触发事件的时候,是对右边的相应显示不同内容吧,那你是不同面板显示吧,那就新创建一个面板来显示数据了
    然后每次点击不同的JTree,对右边有显示时,右边的Panel是先删掉(旧的),在添加新的Panel上去。不会覆盖掉
      

  2.   

    这个我昨天刚做过,左边是一个JTree,右边是一个JPanel,当点击左边的节点时,添加一个addTreeSelectionListener监听,在valueChanged(TreeSelectionEvent e)事件里面先找到你点击的节点TreePath,然后依此添加此节点的子节点到JPanel上,我用的是添加一个个的JButton,
    具体的部分代码如下:
    Object[] path = e.getPath().getPath(); //TreePath.getPath(),返回有序的 Objects 数组,它包含此 TreePath 的组件
                    String ss = "";
                    for (int i = 1; i < path.length; i++) {
                        ss += File.separator + path[i].toString();
                    }
                    File f = new File(ss.substring(1));
                    lbStatus.setText(f.toString());
                    String[] list = f.list();
                    Vector vFile = new Vector(), vDir = new Vector();
                    for (int i = 0; i < list.length; i++) {
                        if ((new File(ss + File.separator + list[i])).isDirectory()) {
                            vDir.addElement(list[i]);
                        } else {
                            vFile.addElement(list[i]);
                        }
                    }
                    for (int i = 0; i < vDir.size(); i++) {
                        addButton((String) (vDir.elementAt(i)), ss);
                    }
                    for (int i = 0; i < vFile.size(); i++) {
                        addButton((String) (vFile.elementAt(i)), ss);
                    }方法addButton:private void addButton(String fileName, String filePath) {
            JButton btt = new JButton(fileName);
            btt.setBorder(null);
            btt.setHorizontalAlignment(SwingConstants.LEFT); //设置图标和文本的水平对齐方式。
            btt.setBackground(Color.white);
            if ((new File(filePath + File.separator + fileName)).isDirectory()) {
                btt.setIcon(UIManager.getIcon("Tree.closedIcon"));
            } else {
                btt.setIcon(UIManager.getIcon("Tree.leafIcon"));
            }
            filePanel.add(btt);
            btt.addActionListener(this);
        }
      

  3.   

    Panel.add(); 
    Panel.delete(); 
    就能实现
      

  4.   

    用JSplitPane实现。把JTree放左面,右面放置Panel 然后点击不同的节点,右面重置panel就可以了。
    package module11.event.treeselectionlistener;
    import java.awt.*;
    import javax.swing.*;
    import javax.swing.event.TreeSelectionEvent;
    import javax.swing.event.TreeSelectionListener;
    import javax.swing.tree.DefaultMutableTreeNode;
    public class JSplitPane_JTree extends JFrame{
    private JSplitPane jsp;
    private JTree jt;
    private WelcomePanel welcomePanel 
    = new WelcomePanel();
    private QueryPanel queryPanel 
    = new QueryPanel();

    public JSplitPane_JTree(){
    initGUI();
    }
    private void initGUI() {
    // TODO Auto-generated method stub
    this.setSize(new Dimension(400,300));
    this.setTitle("JSplitPane_JTree");
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    Container c = this.getContentPane();
    DefaultMutableTreeNode root = 
    new DefaultMutableTreeNode("信用卡自助服务");
    DefaultMutableTreeNode chiled1 = 
    new DefaultMutableTreeNode("查询");
    DefaultMutableTreeNode chiled2 = 
    new DefaultMutableTreeNode("存款");
    DefaultMutableTreeNode chiled3 = 
    new DefaultMutableTreeNode("取款");
    root.add(chiled1);
    root.add(chiled2);
    root.add(chiled3);

    jt = new JTree(root);
    jt.addTreeSelectionListener(
    new MyTreeSelectionListener());
    jsp = new JSplitPane();
    jsp.setDividerLocation(100);
    jsp.add(jt,JSplitPane.LEFT);
    jsp.add(welcomePanel,JSplitPane.RIGHT);
    c.add(jsp);
    }

    class MyTreeSelectionListener implements TreeSelectionListener{ public void valueChanged(TreeSelectionEvent arg0) {
    // TODO Auto-generated method stub
    String node = jt.getLastSelectedPathComponent()
    .toString();
    if(node.equals("查询")){
    jsp.remove(jsp.getRightComponent());
    jsp.add(queryPanel,JSplitPane.RIGHT);
    }else{
    jsp.remove(jsp.getRightComponent());
    jsp.add(welcomePanel,JSplitPane.RIGHT);
    }
    }

    }
    }
    package module11.event.treeselectionlistener;
    import java.awt.*;
    import javax.swing.*;
    public class JSplitPane_JTreeTest { /**
     * @param args
     * @throws UnsupportedLookAndFeelException 
     * @throws IllegalAccessException 
     * @throws InstantiationException 
     * @throws ClassNotFoundException 
     */
    public static void main(String[] args) throws ClassNotFoundException, InstantiationException, IllegalAccessException, UnsupportedLookAndFeelException {
    // TODO Auto-generated method stub
    UIManager.setLookAndFeel(
    UIManager.
    getSystemLookAndFeelClassName());
    JSplitPane_JTree frame = 
    new JSplitPane_JTree();
    frame.setVisible(true);
    }}
    你可以试下是不是这种效果?
      

  5.   

    七楼的welcomePanel 是什么??