源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

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

  • 时间:2020-12-18 14:25 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Java Swing中的表格(JTable)和树(JTree)组件使用实例
[b]一:表格(JTable):[/b] [b]1.基本概念:[/b] 表格(JTable)是Swing 新增加的组件,主要是为了将数据以表格的形式显示.给显示大块数据提供了简单的机制. [b]2.常用构造方法:[/b]  * JTable():使用系统默认的模型创建一个JTable 实例.  * JTable(int numRows,int numColumns):创建一个使用DefaultTableModel 指定行、列的空表格。  * JTable(Object[ ][ ] rowData,Object[ ][ ] columnNames):创建一个显示二维数据的表格。 可以直接使用表格列名数组和表格数据数组来创建表格.  * JTable(TableModel dm):创建一个指定数据模式和默认字段模式的JTable 实例。 通常用数据模型类的对象来保存数据,而表格模型是通过表格列名数组和表格数据数组来创建的. [b]3.常用方法:[/b] [b]4.综合案例:[/b] 代码1:
[u]复制代码[/u] 代码如下:
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: [img]http://files.jb51.net/file_images/article/201410/20141013102257634.jpg?201491310239[/img] 代码2:
[u]复制代码[/u] 代码如下:
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: [img]http://files.jb51.net/file_images/article/201410/20141013102320292.jpg?2014913102327[/img] [b]二:树(JTree):[/b] [b]1.基本概念:[/b]   树(JTree):将分层数据集显示为轮廓的控件。 [b]2.常用构造方法:[/b]    JTree():返回带有示例模型的JTree。    JTree(Object[] value):返回JTree,指定数组的每个元素作为不被显示的新根节点的子节点。    //只有这个构造函数可以创建多个根结点    JTree(Object[] value):返回 JTree,指定数组的每个元素作为不被显示的新根节点的子节点。    JTree(TreeNode root):返回 JTree,指定的 TreeNode 作为其根,它显示根节点。    JTree(TreeNode root, boolean asksAllowsChildren):返回 JTree,指定的 TreeNode 作为其根,    它用指定的方式显示根节点,并确定节点是否为叶节点。(true设置为可添加孩子结点,再添加孩子结点). [b]3.代码演示:[/b] 示例1:
[u]复制代码[/u] 代码如下:
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: [img]http://files.jb51.net/file_images/article/201410/20141013102411431.jpg?2014913102420[/img] 示例2:
[u]复制代码[/u] 代码如下:
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: [img]http://files.jb51.net/file_images/article/201410/20141013102436616.jpg?2014913102444[/img]
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部