JTREE使用例子—创建一个客户端界面

以下代码主要创建一个教师客户端界面。

界面图片:

复制代码
/**利用 JTree 类,你可以显示等级体系的数据。一个 JTree 对象并没有包含实际的数据;它只是提供了数据的一个视图。*/
import java.awt.Dimension;
import java.awt.Image;
import java.awt.Toolkit;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JTree;
import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.DefaultTreeModel;

//Frame 是带有标题和边界的顶层窗口。
public class TreeDemo1 extends JFrame{
    
    private DefaultMutableTreeNode dmtnRoot =                     //创建根节点
            new DefaultMutableTreeNode(new MyNode("操作选项","0"));
    private DefaultMutableTreeNode dmtn1 =                        //创建系统选项节点
            new DefaultMutableTreeNode(new MyNode("系统选项","1"));
    private DefaultMutableTreeNode dmtn2 =                        //创建学生信息管理节点
            new DefaultMutableTreeNode(new MyNode("学生信息管理","2"));
    private DefaultMutableTreeNode dmtn3 =                        //创建课程管理节点
            new DefaultMutableTreeNode(new MyNode("课程管理","3"));
    private DefaultMutableTreeNode dmtn4 =                        //创建班级设置节点
            new DefaultMutableTreeNode(new MyNode("班级设置","4"));
    private DefaultMutableTreeNode dmtn11 =                        //创建退出节点
            new DefaultMutableTreeNode(new MyNode("退出","11"));
    private DefaultMutableTreeNode dmtn13 =                        //创建密码修改节点
            new DefaultMutableTreeNode(new MyNode("密码修改","13"));
    private DefaultMutableTreeNode dmtn21 =                        //创建新生报到节点
            new DefaultMutableTreeNode(new MyNode("新生报到","21"));
    private DefaultMutableTreeNode dmtn22 =                        //创建学生信息查询节点
            new DefaultMutableTreeNode(new MyNode("学生信息查询","22"));
    private DefaultMutableTreeNode dmtn221 =                    //创建基本信息查询节点
            new DefaultMutableTreeNode(new MyNode("基本信息查询","221"));
    private DefaultMutableTreeNode dmtn222 =                    //创建成绩查询节点
            new DefaultMutableTreeNode(new MyNode("成绩查询","222"));
    private DefaultMutableTreeNode dmtn31 =                    //创建开课选项设置节点
            new DefaultMutableTreeNode(new MyNode("开课选项设置","31"));
    private DefaultMutableTreeNode dmtn32 =                    //创建课程成绩录入节点
            new DefaultMutableTreeNode(new MyNode("课程成绩录入","32"));
    private DefaultMutableTreeNode dmtn34 =                    //创建添加课程节点
            new DefaultMutableTreeNode(new MyNode("添加课程","34"));
    private DefaultMutableTreeNode dmtn42 =                    //创建增加班级节点
            new DefaultMutableTreeNode(new MyNode("增加班级","42"));
    private DefaultTreeModel dtm = new DefaultTreeModel(dmtnRoot);    //创建根节点
    private JTree jt = new JTree(dtm);                        //创建树状列表控件
    private JScrollPane jspz = new JScrollPane(jt);            //创建滚动窗口
    /**这段代码创建了DefaultMutableTreeNode 实例作为的节点。
     * 创建完节点后,通过指定刚才创建的根节点为JTree 构造函数的参数,创建一棵树。
     * 最后,将树放到滚动面板中,这是一个通常的策略,因为需要显示完一个树,而展开树需要另外比较大的空间。 */
    private JPanel jpy = new JPanel();                        //创建面板
    private JSplitPane jsp1 =                                 //创建分割窗口
            new JSplitPane(JSplitPane.HORIZONTAL_SPLIT,jspz,jpy);
    //swing分割窗口控件JSplitPane,用来将窗口分割成两个部分。
    
    public TreeDemo1(){        //构造器
        this.initialTree();                                    //初始化树状列表控
        this.initialFrame();                                //初始化主窗体
    }
    
    public void initialTree(){
        //将各个节点添加到树根节点
        dmtnRoot.add(dmtn1);dmtnRoot.add(dmtn2);            
        dmtnRoot.add(dmtn3);dmtnRoot.add(dmtn4);
        dmtn1.add(dmtn11);dmtn1.add(dmtn13);
        dmtn2.add(dmtn21);dmtn2.add(dmtn22);
        dmtn22.add(dmtn221);dmtn22.add(dmtn222);
        dmtn3.add(dmtn31);dmtn3.add(dmtn32);dmtn3.add(dmtn34);
        dmtn4.add(dmtn42);
    }
    
    public void initialFrame(){                                //设置窗体的标题、大小及其可见性
        //设置分割窗体的位置并添加到主窗体
        this.add(jsp1);                
        jsp1.setDividerLocation(200);
        jsp1.setDividerSize(4);                                //设置分割窗体的宽度
        Image image = new ImageIcon("ico.gif").getImage();    //加载窗体图标对象
        //设置窗体的图标和标题
        this.setIconImage(image);
        this.setTitle("教师客户端");
        Dimension screenSize =                                 //得到屏幕的Dimension对象
                Toolkit.getDefaultToolkit().getScreenSize();
        int centerX = screenSize.width/2;                    //计算屏幕宽度中间像素
        int centerY = screenSize.height/2;                    //计算屏幕高度中间像素
        int w = 900;                                        //本窗体宽度
        int h = 650;                                        //本窗体高度
        this.setBounds(centerX-w/2,centerY-h/2,w,h);        //设置窗体出现在屏幕中央
        this.setVisible(true);                                //设置窗体可见性
        this.setExtendedState(JFrame.MAXIMIZED_BOTH);        //窗体全屏
        
    }
    
    
    class MyNode{                                        //自定义的初始化树节点的数据对象的类
        private String values;                            //声明values属性    
        private String id;                                //用于确定节点的id属性    
        public MyNode(String values,String id){            //构造器
            this.values = values;                        //设置values的值
            this.id = id;                                //设置id的值
        }
        public String toString(){                        //重写toString方法
            return this.values;
        }
        public String getId(){                            //Id的get方法
            return this.id;
        }
    }
    /**DefaultMutableTreeNode 构造函数的参数是一个用户自定义的类对象,
     * 它包含或指向了关联树节点的数据。这个用户对象可以是一个字符串,或者是一个自定义的类。
     * 如果它实现了一个自定义对象,你应该要重新实现覆盖他的 toString 方法,
     * 这样他才能返回对应字符串作为节点显示的字符串。
     * JTree 默认情况下,每个节点都是用 toString 的返回值作为显示。
     * 所以,让 toString 返回一些有意义的值是很重要的。*/
    
    
    public static void main(String args[]){
        new TreeDemo1();
    }
}

/**你可以调用 Jtree 的构造函数创建一棵树,指定一个实现了 TreeNode 的类作为参数。
 * 你应该尽量把这棵树放到一个滚动面板中( scroll pane ),
 * 这样树就不会占用太大的空间。
 * */
复制代码
 
原文地址:https://www.cnblogs.com/Leo_wl/p/2777376.html