有没人回答呢?我真得不知如何用swing做这么强功能的树?恳求各位高手大侠帮帮小弟忙!!!

解决方案 »

  1.   

    我也不会,在书上帮你找到一些,也许有帮助。
    swing中的JTree控件可以实现。
    //Application.javaimport javax.swing.UIManager;
    import java.awt.*;public class Application {
      boolean packFrame = false;  /**Construct the application*/
      public Application() {
        MainFrame frame = new MainFrame();
        //Validate frames that have preset sizes
        //Pack frames that have useful preferred size info, e.g. from their layout
        if (packFrame) {
          frame.pack();
        }
        else {
          frame.validate();
        }
        //Center the window
        Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
        Dimension frameSize = frame.getSize();
        if (frameSize.height > screenSize.height) {
          frameSize.height = screenSize.height;
        }
        if (frameSize.width > screenSize.width) {
          frameSize.width = screenSize.width;
        }
        frame.setLocation((screenSize.width - frameSize.width) / 2, (screenSize.height - frameSize.height) / 2);
        frame.setVisible(true);
      }
      /**Main method*/
      public static void main(String[] args) {
        try {
          UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());
        }
        catch(Exception e) {
          e.printStackTrace();
        }
        new Application();
      }
    }
    //MainFrame.java
    //演示怎样显示现实的用户和用户组数据import java.awt.*;
    import java.awt.event.*;
    import javax.swing.*;
    import java.util.*;
    import javax.swing.tree.*;public class MainFrame extends JFrame {
      JPanel contentPane;
      BorderLayout borderLayout1 = new BorderLayout();
      JScrollPane jScrollPane1 = new JScrollPane();  Vector userData=new Vector();
      Vector groupData=new Vector();  JTree tree ;  /**Construct the frame*/
      public MainFrame() {    enableEvents(AWTEvent.WINDOW_EVENT_MASK);
        try {
          jbInit();
        }
        catch(Exception e) {
          e.printStackTrace();
        }
      }
      /**Component initialization*/
      private void jbInit() throws Exception  {
        //setIconImage(Toolkit.getDefaultToolkit().createImage(MainFrame.class.getResource("[Your Icon]")));
         initTree();
        contentPane = (JPanel) this.getContentPane();
        contentPane.setLayout(borderLayout1);
        this.setSize(new Dimension(400, 300));
        this.setTitle("Demo how to use JTree");
        contentPane.add(jScrollPane1, BorderLayout.CENTER);
        jScrollPane1.getViewport().add(tree, null);  }
      /**Overridden so we can exit when window is closed*/
      protected void processWindowEvent(WindowEvent e) {
        super.processWindowEvent(e);
        if (e.getID() == WindowEvent.WINDOW_CLOSING) {
          System.exit(0);
        }
      }  void initDataSource(){
        for (int i=0;i<5;i++){
          userData.addElement("User"+i);
          groupData.addElement("Group"+i);
        }
      }
      void initTree(){
        initDataSource();    DefaultMutableTreeNode top = new DefaultMutableTreeNode("Root");
        tree=new JTree(top);    DefaultMutableTreeNode groups = new DefaultMutableTreeNode("Groups");
        DefaultMutableTreeNode users = new DefaultMutableTreeNode("Users");
        for (int i=0;i<groupData.size();i++){
          DefaultMutableTreeNode leaf = new DefaultMutableTreeNode((String)groupData.elementAt(i));
          groups.add(leaf);
        }
        top.add(groups);
        for (int i=0;i<userData.size();i++){
          DefaultMutableTreeNode leaf = new DefaultMutableTreeNode((String)userData.elementAt(i));
          users.add(leaf);
        }
        top.add(users);
    //    tree.setShowsRootHandles(true);
      }  public static void main(String[] args){
        MainFrame frame=new MainFrame();
        frame.show();  }
    }
    比较简单的例子。
      

  2.   

    多谢skylan(天空),不过这个只是固定的显示一个树,并不能对树的结点进行操作。
    我找了很多书和资料,都找不到,好像没人做这样的树一样。
    不过以前看过用友的B/S模式的JAVA做的MIS系统网站,界面非常好看,左边的导航栏也是用树做,功能和JBuilder一样强,他是一个用swing设计的applet。
    我现在很想做这样的树,但是真的没能力,不知还有哪位大侠做过的,能帮帮我忙吗?最好的applet的
      

  3.   

    最好是java的applet,而不是application
      

  4.   

    可以试着用xml来解析这棵树,就可以生成动态的树,并且可以对书中的节点进行操作
      

  5.   

    多谢shouzi0765(瘦子),但你能帮我解释清楚如何用xml来生成动态树吗
    我真的不知如何操作,最好能给个例子来看看,行吗?
    还有哪位高人做过的,能帮帮我吗?
      

  6.   

    郁闷啊,难道CSDN就没有人能够解决吗?