Java Swing中的表格(JTable)和树(JTree)组件使用实例
一:表格(JTable): 1.基本概念: 表格(JTable)是Swing 新增加的组件,主要是为了将数据以表格的形式显示.给显示大块数据提供了简单的机制. 2.常用构造方法: * JTable():使用系统默认的模型创建一个JTable 实例. 可以直接使用表格列名数组和表格数据数组来创建表格. * 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","流放中","无数次分手后没有" } }; 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);// 设置某个单元格的值,这个值是一个对象 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(TreeNode root):返回 JTree,指定的 TreeNode 作为其根,它显示根节点。 JTree(TreeNode root,boolean asksAllowsChildren):返回 JTree,指定的 TreeNode 作为其根, 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: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |