Java Swing中的表格(JTable)和树(JTree)组件使用实例_Java教程-查字典教程网
Java Swing中的表格(JTable)和树(JTree)组件使用实例
Java Swing中的表格(JTable)和树(JTree)组件使用实例
发布时间:2016-12-28 来源:查字典编辑
摘要:一:表格(JTable):1.基本概念:表格(JTable)是Swing新增加的组件,主要是为了将数据以表格的形式显示.给显示大块数据提供了...

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

相关阅读
推荐文章
猜你喜欢
附近的人在看
推荐阅读
拓展阅读
  • 大家都在看
  • 小编推荐
  • 猜你喜欢
  • 最新Java学习
    热门Java学习
    编程开发子分类