当前位置: 移动技术网 > IT编程>开发语言>Java > Java Swing中的表格(JTable)和树(JTree)组件使用实例

Java Swing中的表格(JTable)和树(JTree)组件使用实例

2019年07月22日  | 移动技术网IT编程  | 我要评论

一:表格(jtable):

1.基本概念:

表格(jtable)是swing 新增加的组件,主要是为了将数据以表格的形式显示.给显示大块数据提供了简单的机制.

2.常用构造方法:

 * jtable():使用系统默认的模型创建一个jtable 实例.
 * jtable(int numrows,int numcolumns):创建一个使用defaulttablemodel 指定行、列的空表格。
 * jtable(object[ ][ ] rowdata,object[ ][ ] columnnames):创建一个显示二维数据的表格。

可以直接使用表格列名数组和表格数据数组来创建表格.

 * jtable(tablemodel dm):创建一个指定数据模式和默认字段模式的jtable 实例。

通常用数据模型类的对象来保存数据,而表格模型是通过表格列名数组和表格数据数组来创建的.

3.常用方法:

4.综合案例:

代码1:

复制代码 代码如下:

public class jtabledemo1 extends jframe { 
 
    //定义表格 
    jtable table; 
    //定义滚动条面板(用以使表格可以滚动) 
    jscrollpane scrollpane; 
    //定义数据模型类的对象(用以保存数据), 
    defaulttablemodel tablemodel; 
 
    public jtabledemo1() { 
        super(); 
        settitle("表格模型与表格"); 
 
        scrollpane = new jscrollpane(); 
         
        // 定义表格列名数组 
        string[] columnnames = { "a", "b","c" }; 
        // 定义表格数据数组 
        string[][] tablevalues = { { "a1", "b1","c1" }, { "a2", "b2","c2" }, 
                { "a3", "b3","c3" }, { "a4", "b4","c4" } }; 
 
        // 创建指定表格列名和表格数据的表格模型类的对象 
        tablemodel = new defaulttablemodel(tablevalues, columnnames); 
        // 创建指定表格模型的表格 
        table = new jtable(tablemodel); 
 
        //设置 rowsorter(rowsorter 用于提供对 jtable 的排序和过滤)。 
        table.setrowsorter(new tablerowsorter<defaulttablemodel>(tablemodel)); 
        scrollpane.setviewportview(table); 
        getcontentpane().add(scrollpane, borderlayout.center); 
 
        setbounds(300, 200, 400, 300); 
        setvisible(true); 
        setdefaultcloseoperation(jframe.exit_on_close); 
    } 
 
    public static void main(string args[]) { 
        new jtabledemo1(); 
    } 
}

截图1:

代码2:

复制代码 代码如下:

import java.awt.*; 
import javax.swing.*; 
 
public class jtabledemo3 { 
 
    jframe frame; 
    jpanel panel; 
    jscrollpane scrollpane1, scrollpane2, scrollpane3; 
    jtable jtable1, jtable2, jtable3; 
 
    public jtabledemo3() { 
        frame = new jframe("jtabledemo"); 
 
        jtable1 = new jtable(8, 6); 
 
        final object[] columnnames = { "姓名", "性别", "家庭地址",// 列名最好用final修饰 
                "电话号码", "生日", "工作", "收入", "婚姻状况", "恋爱状况" }; 
        object[][] rowdata = { 
                { "ddd", "男", "江苏南京", "1378313210", "03/24/1985", "学生", "寄生中", 
                        "未婚", "没" }, 
                { "eee", "女", "江苏南京", "13645181705", "xx/xx/1985", "家教", "未知", 
                        "未婚", "好象没" }, 
                { "fff", "男", "江苏南京", "13585331486", "12/08/1985", "汽车推销员", 
                        "不确定", "未婚", "有" }, 
                { "ggg", "女", "江苏南京", "81513779", "xx/xx/1986", "宾馆服务员", 
                        "确定但未知", "未婚", "有" }, 
                { "hhh", "男", "江苏南京", "13651545936", "xx/xx/1985", "学生", "流放中", 
                        "未婚", "无数次分手后没有" } }; 
 
        jtable2 = new jtable(rowdata, columnnames); 
 
        jtable3 = new jtable(rowdata, columnnames); 
        jtable3.setpreferredscrollableviewportsize(new dimension(600, 100));// 设置表格的大小 
        jtable3.setrowheight(30);// 设置每行的高度为20 
        jtable3.setrowheight(0, 20);// 设置第1行的高度为15 
        jtable3.setrowmargin(5);// 设置相邻两行单元格的距离 
        jtable3.setrowselectionallowed(true);// 设置可否被选择.默认为false 
        jtable3.setselectionbackground(color.white);// 设置所选择行的背景色 
        jtable3.setselectionforeground(color.red);// 设置所选择行的前景色 
        jtable3.setgridcolor(color.red);// 设置网格线的颜色 
        jtable3.selectall();// 选择所有行 
        jtable3.setrowselectioninterval(0, 2);// 设置初始的选择行,这里是1到3行都处于选择状态 
        jtable3.clearselection();// 取消选择 
        jtable3.setdragenabled(false);// 不懂这个 
        jtable3.setshowgrid(true);// 是否显示网格线 
        jtable3.setshowhorizontallines(true);// 是否显示水平的网格线 
        jtable3.setshowverticallines(true);// 是否显示垂直的网格线 
        jtable3.setvalueat("tt", 0, 0);// 设置某个单元格的值,这个值是一个对象 
        jtable3.dolayout(); 
        jtable3.setbackground(color.cyan); 
 
        // jtable最好加在jscrollpane上以实现滚动效果 
        scrollpane1 = new jscrollpane(jtable1); 
        scrollpane2 = new jscrollpane(jtable2); 
        scrollpane3 = new jscrollpane(jtable3); 
 
        panel = new jpanel(new gridlayout(0, 1)); 
        panel.setpreferredsize(new dimension(600, 400)); 
        panel.setbackground(color.black); 
        panel.add(scrollpane1); 
        panel.add(scrollpane2); 
        panel.add(scrollpane3); 
 
        frame.setcontentpane(panel); 
        frame.pack(); 
        frame.setvisible(true); 
        frame.setdefaultcloseoperation(jframe.exit_on_close); 
    } 
 
    public static void main(string[] args) { 
        new jtabledemo3(); 
    } 
}

截图2:

二:树(jtree):

1.基本概念:

  树(jtree):将分层数据集显示为轮廓的控件。

2.常用构造方法:

   jtree():返回带有示例模型的jtree。

   jtree(object[] value):返回jtree,指定数组的每个元素作为不被显示的新根节点的子节点。

   //只有这个构造函数可以创建多个根结点
   jtree(object[] value):返回 jtree,指定数组的每个元素作为不被显示的新根节点的子节点。

   jtree(treenode root):返回 jtree,指定的 treenode 作为其根,它显示根节点。

   jtree(treenode root, boolean asksallowschildren):返回 jtree,指定的 treenode 作为其根,
   它用指定的方式显示根节点,并确定节点是否为叶节点。(true设置为可添加孩子结点,再添加孩子结点).

3.代码演示:

示例1:

复制代码 代码如下:

public class jtreedemo1 { 
     
    jframe f;  
    box box; 
    jtree jtree1,jtree2; 
     
    public jtreedemo1() 
    { 
        f = new jframe(" jtreedemo1 "); 
        box = box.createhorizontalbox(); //创建box 类对象 
         
        jtree1 = new jtree(); 
        jtree2 = new jtree(); 
         
        //向此组件添加任意的键/值 
        jtree1.putclientproperty("jtree.linestyle", "angled");  
         
        //向box 容器添加滚动面板 
        box.add(new jscrollpane(jtree1), borderlayout.west); 
        box.add(new jscrollpane(jtree2), borderlayout.east); 
         
        f.getcontentpane().add(box, borderlayout.center); 
         
        f.setsize(300, 240); 
        //f.pack(); 
        f.setlocation(300, 200); 
        f.setvisible(true); 
        f.setdefaultcloseoperation(jframe.exit_on_close); 
    } 
     
    public static void main(string[] args) { 
        new jtreedemo1(); 
    } 
}

截图1:

示例2:

复制代码 代码如下:

public class jtreedemo2 { 
 
    jframe f;  
    jpanel p;  
    jtree jtree1,jtree2,jtree3,jtree4,jtree5,jtree6,jtree7; 
     
    public jtreedemo2() { 
         
        f = new jframe(" jtreedemo2 "); 
         
        // 构造函数:jtree() 
        jtree1 = new jtree(); 
         
        // 构造函数:jtree(object[] value) 
        object[] letters = { " a ", " b ", " c ", " d ", " e " }; 
        jtree2 = new jtree(letters); 
 
        // 构造函数:jtree(treenode root)(treenode空) 
        // 用空结点创建树 
        defaultmutabletreenode node1 = new defaultmutabletreenode(); // 定义树结点 
        jtree3 = new jtree(node1); // 用此树结点做参数调用 jtree的构造函数创建含有一个根结点的树 
 
        // 构造函数:jtree(treenode root)(同上,只是treenode非空) 
        // 用一个根结点创建树 
        defaultmutabletreenode node2 = new defaultmutabletreenode(" color "); 
        jtree4 = new jtree(node2); // 结点不可以颜色,默认为白面黑字 
        jtree4.setbackground(color.lightgray); 
 
         
        // 构造函数:jtree(treenode root, boolean 
        // asksallowschildren)(同上,只是treenode又有不同) 
        // 使用defaultmutabletreenode类先用一个根结点创建树,设置为可添加孩子结点,再添加孩子结点 
        defaultmutabletreenode color = new defaultmutabletreenode(" color ", 
                true); 
         
        defaultmutabletreenode gray = new defaultmutabletreenode(" gray "); 
        gray.add(new defaultmutabletreenode(" lightgray ")); 
        gray.add(new defaultmutabletreenode(" darkgray ")); 
         
        color.add(gray); 
         
        color.add(new defaultmutabletreenode(" red ")); 
        color.add(new defaultmutabletreenode(" green ")); 
 
        jtree5 = new jtree(color); 
 
         
        // 构造函数:jtree(treenode root)(同上,只是treenode非空) 
        // 通过逐个添加结点创建树 
        defaultmutabletreenode biology = new defaultmutabletreenode(" biology "); 
        defaultmutabletreenode animal = new defaultmutabletreenode(" animal "); 
        defaultmutabletreenode mammal = new defaultmutabletreenode(" mammal "); 
        defaultmutabletreenode horse = new defaultmutabletreenode(" horse "); 
        mammal.add(horse); 
        animal.add(mammal); 
        biology.add(animal); 
         
        jtree6 = new jtree(biology); 
        horse.isleaf(); 
        horse.isroot(); 
 
         
        // 构造函数:jtree(treemodel newmodel) 
        // 用defaultmutabletreenodel类定义一个结点再用这个结点做参数定义一个用defaulttreemode 
        // 创建一个树的模型,再用jtree的构造函数创建一个树 
        defaultmutabletreenode root = new defaultmutabletreenode(" root1 "); 
        defaultmutabletreenode child1 = new defaultmutabletreenode(" child1 "); 
        defaultmutabletreenode child11 = new defaultmutabletreenode(" child11 "); 
        defaultmutabletreenode child111 = new defaultmutabletreenode( 
                " child111 "); 
        root.add(child1); 
        child1.add(child11); 
        child11.add(child111); 
 
        defaulttreemodel model = new defaulttreemodel(root); 
 
        jtree7 = new jtree(model); 
 
         
        p = new jpanel(); 
        p.setlayout(new boxlayout(p, boxlayout.x_axis)); 
        p.setpreferredsize(new dimension(700, 400)); 
         
        // jtree必须放在jscrollpane上 
        p.add(new jscrollpane(jtree1));  
        p.add(new jscrollpane(jtree2)); 
        p.add(new jscrollpane(jtree3)); 
        p.add(new jscrollpane(jtree4)); 
        p.add(new jscrollpane(jtree5)); 
        p.add(new jscrollpane(jtree6)); 
        p.add(new jscrollpane(jtree7)); 
 
         
        f.setcontentpane(p); 
        f.pack(); 
        f.setlocation(300, 200); 
        f.setvisible(true); 
        f.setdefaultcloseoperation(jframe.exit_on_close); 
    } 
 
    public static void main(string[] args) { 
         
        new jtreedemo2(); 
     
    } 
}

截图2:

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网