zoukankan      html  css  js  c++  java
  • GUI树组件,表格

    树组件首先要new一个JTree,再加结点,然后添加到 JScrollPane

    JTree tree1=new JTree();
    //.......添加节点
    add(new ScrollPane(tree1)

    添加节点

    DefaultMutableTreeNode root=new DefaultMutableTreeNode("dongxi")//后面的是备注
    DefaultMutableTreeNode root=new DefaultMutableTreeNode(new Good("aa",11));//还可以作为叶子new 对象

    添加监视器(由树来添加

    addTreeSelectionListener(TreeSelectionListener listener)

    TreeSelectionListener接口的方法

    public void valueChanged(TreeSelectionEvent e)

    在上面的接口方法中,返回树的结点,再返回结点中的对象

    DefaultMutableTreeNode node1=(DefaultMutableTreeNode)tree.getLastSelectedPathComponent();//只有树Tree才能用的方法
    if(node.isLeaf())//判断是否叶子节点
    Obeject a=(Obeject)node.getUserObject()//返回叶子里面的对象

    完整的测试代码

    public class test{
    
        public static void main(String args[]){
            MyWin window1=new MyWin();
            window1.setBounds(12,12,400,300);
        }
    }
    
    class MyWin extends JFrame implements TreeSelectionListener{
        JTextField text1;
        JButton button1,button2;
        JTextArea textArea1,textArea2;
        JLabel label1;
        JTree tree1;
        MyWin(){
            init();
            setVisible(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        void init(){
            DefaultMutableTreeNode root=new DefaultMutableTreeNode("Goods");
            DefaultMutableTreeNode nodeTV=new DefaultMutableTreeNode("TV");        
            DefaultMutableTreeNode nodePhone=new DefaultMutableTreeNode("phone");    
            DefaultMutableTreeNode tv1=new DefaultMutableTreeNode(new Goods("huangTV",11));
            DefaultMutableTreeNode tv2=new DefaultMutableTreeNode(new Goods("yuTV",21));
            DefaultMutableTreeNode phone1=new DefaultMutableTreeNode(new Goods("ga",31));
            DefaultMutableTreeNode phone2=new DefaultMutableTreeNode(new Goods("bing",11));
            root.add(nodeTV);
            root.add(nodePhone);
            nodeTV.add(tv1);
            nodeTV.add(tv2);
            nodePhone.add(phone1);
            nodePhone.add(phone2);
            tree1=new JTree(root);
            tree1.addTreeSelectionListener(this);
            setLayout(new GridLayout(1,2));
            add(new JScrollPane(tree1));
            textArea2=new JTextArea(15,15);
            add(new JScrollPane(textArea2));
        }
        public void valueChanged(TreeSelectionEvent e){
            DefaultMutableTreeNode a=(DefaultMutableTreeNode)tree1.getLastSelectedPathComponent();
            if(a.isLeaf()){//是叶子节点?
                Goods b=(Goods)a.getUserObject();
                textArea2.append(b.name+": "+b.price+"
    ");
            }
            else
                textArea2.setText(null);
        }
    }
    
    class Goods{
        String name;
        double price;
        Goods(String name,double price){
            this.name=name;
            this.price=price;
        }
    }

    表格组件

    Jtable默认的构造方法有7个,这里说常用的3个

    JTable()
    JTable(int a,int b)//几行几列
    JTable(Object data[][],Object columnName[])//data为数据数组,columnName为列名数组

    如果表格data[][]是 数字类型,可以用 Double.parseDouble 或者Integer.parseInt(s);

    调用repaint来刷新表格

    计算成绩代码测试

    class MyWin extends JFrame implements ActionListener{
        JTable table1;
        JButton button1;
        Object a[][];
        Object name[]={"姓名","英语成绩","数学成绩","总成绩"};
        MyWin(){
            init();
            setVisible(true);
            setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        }
        void init(){
            a=new Object[8][4];
            for(int i=0;i<8;i++){
                for(int j=0;j<4;j++){
                    if(j!=0)
                        a[i][j]=0;
                    else
                        a[i][j]="姓名";
                }
            }
            button1=new JButton("click");
            table1=new JTable(a,name);
            Container con1=this.getContentPane();//获得一个容器,不用add
            getContentPane().add(new JScrollPane(table1), BorderLayout.CENTER);
            con1.add(new JLabel("update the data and click the button"),BorderLayout.NORTH);
            con1.add(button1,BorderLayout.SOUTH);
            button1.addActionListener(this);
    //        validate();//验证组件
            
        }
        public void actionPerformed(ActionEvent e) {
            double sum=0;
            boolean boo=true;
            for(int i=0;i<8;i++){
                sum=0;
                for(int j=1;j<3;j++){
                    try{sum+=Double.parseDouble(a[i][j].toString());
                    }
                    catch(Exception ee){
                        boo=false;
                        table1.repaint();
                    }
                }
                if(boo==true){
                    a[i][3]=sum+"";//把他改为String
                    table1.repaint();
                }
                
            }
        }
    
    }
  • 相关阅读:
    程序员:不要自称为码农
    SpringBoot对静态资源配置
    LeetCode 572. Subtree of Another Tree(子树)
    LeetCode 437. Path Sum III(统计路径和等于sum的路径数量)
    LeetCode 112. Path Sum(判断路径和是否等于一个数)
    LeetCode 617. Merge Two Binary Trees(归并两棵二叉树)
    LeetCode 226. Invert Binary Tree(翻转二叉树)
    Failure to transfer org.apache.maven.plugins:maven-resources-plugin:pom:2.6 的解决办法
    linux-查询某软件的安装的目录
    WebService概念解释
  • 原文地址:https://www.cnblogs.com/vhyc/p/6002294.html
Copyright © 2011-2022 走看看