欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

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

程序员文章站 2024-02-29 13:23:22
一:表格(jtable): 1.基本概念: 表格(jtable)是swing 新增加的组件,主要是为了将数据以表格的形式显示.给显示大块数据提供了简单的机制. 2.常...

一:表格(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:

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

代码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:

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

二:树(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:

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

示例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:

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