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

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

(0)

相关推荐

  • 详解Java的MyBatis框架中的事务处理

    一.MyBatis单独使用时,使用SqlSession来处理事务: public class MyBatisTxTest { private static SqlSessionFactory sqlSessionFactory; private static Reader reader; @BeforeClass public static void setUpBeforeClass() throws Exception { try { reader = Resources.getResourc

  • 全面解析JTA 深度历险

    什么是事务处理 事务是计算机应用中不可或缺的组件模型,它保证了用户操作的原子性 ( Atomicity ).一致性 ( Consistency ).隔离性 ( Isolation ) 和持久性 ( Durabilily ).关于事务最经典的示例莫过于信用卡转账:将用户 A 账户中的 500 元人民币转移到用户 B 的账户中,其操作流程如下 : 1. 将 A 账户中的金额减少 500 2. 将 B 账户中的金额增加 500 这两个操作必须保正 ACID 的事务属性:即要么全部成功,要么全部失败:假

  • java Swing实现选项卡功能(JTabbedPane)实例代码

     Swing实现选项卡功能(JTabbedPane) 先创建JTabbedPane对象,构造函数可使用JTabbedPane(int tabPlacement).tabPlacement是JTabbedPane从接口 javax.swing.SwingConstants 继承的字段.可以是BUTTOM,TOP等.如下代码所示: JFrame jframe = new JFrame("TEST"); <a href="http://lib.csdn.net/base/do

  • Java Swing中的下拉式菜单(menu)、弹出式菜单(JPopupMenu)、选项卡窗体(JTabbedPane)组件使用案例

    菜单是GUI中最常用的组件,菜单不是Component类的子类,不能放置在普通容器中,不受布局管理器的约束,只能放置在菜单栏中. 菜单组件由菜单栏 (MenuBar).菜单(Menu)和菜单项(MenuItem)三部分组成. 一个菜单栏由若干个菜单组成,一个菜单又由若干个菜单项组成.一般菜单栏放 Frame 窗口中,只要调用 Frame 类的 setMenuBar()方法即可. 常用的菜单有:下拉式菜单和弹出式菜单(独立显示,可出现在任意地方). 一:下拉式菜单的创建步骤: 1.创建一个菜单栏.

  • Java中JDBC事务与JTA分布式事务总结与区别

    Java事务的类型有三种:JDBC事务.JTA(Java Transaction API)事务.容器事务.常见的容器事务如Spring事务,容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现.所以本文暂不讨论容器事务.本文主要介绍J2EE开发中两个比较基本的事务:JDBC事务和JTA事务. JDBC事务 JDBC的一切行为包括事务是基于一个Connection的,在JDBC中是通过Connection对象进行事务管理.在JDBC中,

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

    一:表格(JTable): 1.基本概念: 表格(JTable)是Swing 新增加的组件,主要是为了将数据以表格的形式显示.给显示大块数据提供了简单的机制. 2.常用构造方法: * JTable():使用系统默认的模型创建一个JTable 实例.  * JTable(int numRows,int numColumns):创建一个使用DefaultTableModel 指定行.列的空表格.  * JTable(Object[ ][ ] rowData,Object[ ][ ] columnNa

  • Java Swing中JTable渲染器与编辑器用法示例

    本文实例讲述了Java Swing中JTable渲染器与编辑器用法.分享给大家供大家参考,具体如下: JTable的内容.外观.事件响应在很大程度上是由渲染器与编辑器控制的.具体说来,渲染器负责单元格的外观比如前景色.背景色,以及单元格提示:编辑器负责单元格的内容和事件响应.编辑器默认为文本框形式,也可以使用下拉菜单.按钮.单选按钮等形式.下面通过一个demo程序来说明渲染器与编辑器的基本用法. JButtonTableExample.java package awtDemo; import j

  • Java Swing中JList选择事件监听器ListSelectionListener用法示例

    本文实例讲述了Java Swing中JList选择事件监听器ListSelectionListener用法.分享给大家供大家参考,具体如下: 当JList中的元素被选中时,选择事件将被触发.对于JTable也是一样,你可以把它看做是多个并列的JList.那么,如果程序需要对该事件做出响应,需要以下步骤: (1)创建一个实现了 ListSelectionListener的监听器: (2)使用JList或selectionModel的addListSelectionListener添加监听器: (3

  • Java Swing中JDialog实现用户登陆UI示例

    本文实例讲述了Java Swing中JDialog实现用户登陆UI.分享给大家供大家参考,具体如下: JDialog是一种对话框组件,它常常与JOptionPane配合使用.JOptionPane提供对话框内部的消息.按钮等内容,JDialog提供对话框窗体,提供模态/非模态等属性.JDialog与JFrame在外观上的区别在于,它没有最大化/最小化按钮.如下图所示: JDialog窗体 点击File->connect之后弹出登陆窗口: JFrame窗体 在下面的demo中,演示了JDialog

  • Java Swing中的JButton、JComboBox、JList和JColorChooser组件使用案例

    Swing 的组件与AWT 组件相似,但又为每一个组件增添了新的方法,并提供了更多的高级组件. Swing 的基本组件: 1.按钮(JButton): Swing 中的按钮可以显示图像,并且可以将按钮设置为窗口的默认图标,而且还可以将多个图像指定给一个按钮. (1).JButton 常用的构造方法. JButton(String text):按钮上显示字符. JButton(Icon icon) :按钮上显示图标. JButton(String text, Icon icon):按钮上既显示图标

  • java swing中实现拖拽功能示例

    java实现拖拽示例 Swing中实现拖拽功能,代码很简单,都有注释,自己看,运行效果如下图: 复制代码 代码如下: package com; import java.awt.*;import java.awt.datatransfer.DataFlavor;import java.awt.dnd.DnDConstants;import java.awt.dnd.DropTarget;import java.awt.dnd.DropTargetAdapter;import java.awt.dn

  • Java Swing中的文本框(JTextField)与文本区(JTextArea)使用实例

    一:JTextField的(文本框)使用: JTextField 是一个轻量级组件,它允许编辑单行文本. 1.JTextField的常用构造方法: JTextField() 构造一个新的 TextField. JTextField(int columns) 构造一个具有指定列数的新的空 TextField. JTextField(String text) 构造一个用指定文本初始化的新TextField. JTextField(String text, int columns) 构造一个用指定文本

  • Java Swing中的工具栏(JToolBar)和分割面版(JSplitPane)组件使用案例

    一:工具栏(JToolBar) 代码示例: 复制代码 代码如下: import javax.swing.*; //工具栏的使用案例 public class JToolBarDemo2_jigloo extends javax.swing.JFrame { private JToolBar myJToolBar;  private JButton jB_file;  private JButton jB_edit;  private JButton jB_tools;  private JBut

  • Java Swing中的文本区(JTextArea)实现换行保存到文件的几个方法

    1.如果是采用流的方式一行一行写到文件中,可以把FileWriter换为PrintWriter,然后调用PrintWriter的println()方法. 2. 复制代码 代码如下: byte fileContent[] = getJTextArea().getText().replaceAll("\n", "\r\n").getBytes();//此处主要是为了在Windows中实现换行操作 3. 复制代码 代码如下: FileWriter fw=new FileW

随机推荐