文档介绍:如何使用Table
利用 JTable 类,可以以表格的形式展示数据,可设置允许用户编辑数据。JTable 本身不拥有或者缓存数据;它只是数据的视图。这里有一个放在滚动面板上的典型表格:
本文展示如何完成一些常见的表格相关的任务:包括以下部分:
(1)创建一个简单的表格
(2)向容器添加表格
(3)改变每每一栏的宽度
(4)用户选择
(5)创建表格模型
(6)监听数据改变
(7)点燃数据改变事件
(8)概念:编辑器和渲染器
(9)使用自定义渲染器
(10)为单元格指定提示工具
(11)为列头指定提示工具
(12)排序和过滤
(13)使用组合框作为编辑器
(14)使用其他编辑器
(15)使用编辑器验证用户的文本输入
(16)打印
(17)例子列表
(1)创建一个简单的表格
中的表格在一个字符串数组中声明各个列名
Java代码
String[] columnNames = {"First Name",
"Last Name",
"Sport",
"# of Years",
"Vegetarian"};
数据初始化并存储在二维数组:
Java代码
Object[][] data = {
{"Kathy", "Smith",
"Snowboarding", new Integer(5), new Boolean(false)},
{"John", "Doe",
"Rowing", new Integer(3), new Boolean(true)},
{"Sue", "Black",
"Knitting", new Integer(2), new Boolean(false)},
{"Jane", "White",
"Speed reading", new Integer(20), new Boolean(true)},
{"Joe", "Brown",
"Pool", new Integer(10), new Boolean(false)}
};
接着表格使用这些数据和列名构造一个表格:
Java代码
JTable table = new JTable(data, columnNames);
有两个接收数据的 JTable 构造器:
JTable(Object[][] rowData, Object[] columnNames)
JTable(Vector rowData, Vector columNames)
这些构造函数的好处是容易实现,而缺点是:
他们自动设置每个单元格为可编辑
数据类型都视为一样的(字符串类型)。例如,如果表格的一列有 Boolean 数据,表格用单选框来展示这个数据。可是,如果你用上面两种构造,你的 Boolean 数据将显示为字符串,就像前面表格截图中的 Vegetarian 一列一样。
它们要求你把所有表格数据放入一个数组或者vector,这些数据结构可能不适合某些数据类型。例如,如果你实体化一组数据库对象,比起拷贝所有值放入数组和vector,你可能仅仅想要直接查询这些对象的值。
如果你想避免这些限制,你需要实现你自己的表格模型,见“(5)创建表格模型”。
(2)向容器添加表格
这里有一段创建滚动面板作为表格容器的常规代码:
Java代码
JScrollPane scrollPane = new JScrollPane(table);
(true);
这两行代码实现了:表格对象的引用作为 JScrollPane 构造函数的参数,创建一个容纳table的容器,table添加到容器中; 方法设置了 fillsViewportHeight 属性。当这个属性为 true 时,表格会占据容器整个高度,即便表格没有足够的行去使用这些垂直空间。这使得表格更容易实现拖拉操作。
滚动面板自动把表格头放置在视窗的顶端。当表格数据垂直滚动时,列名保持在视窗顶端可视。
如果你想要使用一个没有滚动面板的表格,你必须获得表格头组件,然后自己放置它,例如:
Java代码
(new BorderLayout());
((), );
(table, Borde