Java Swing JTable深度解析

4星 · 超过85%的资源 需积分: 9 18 下载量 121 浏览量 更新于2024-07-29 1 收藏 164KB DOC 举报
"Swing之JTable详解" Swing中的JTable是用于展示表格数据的关键组件,它是Java Swing库的一部分,提供了丰富的功能来创建和管理表格。JTable类继承自JComponent,进一步继承自Container和Component,这使得它能够集成到Swing GUI中,并与其他组件进行交互。 1、JTable 构造函数 JTable 提供了多个构造函数,以适应不同的数据源和初始化需求: - JTable(): 创建一个空的JTable,使用系统默认的Model。 - JTable(int numRows, int numColumns): 根据指定的行数和列数创建一个空表格,使用DefaultTableModel。 - JTable(Object[][] rowData, Object[] columnNames): 基于二维数组创建表格,其中rowData包含表格数据,columnNames表示列名。 - JTable(TableModel dm): 使用指定的TableModel实例初始化表格。 - JTable(TableModel dm, TableColumnModel cm): 设置数据模式和列模型。 - JTable(TableModel dm, TableColumnModel cm, ListSelectionModel sm): 这个构造函数允许定制数据模式、列模型和选择模式。 - JTable(Vector rowData, Vector columnNames): 使用Vector对象作为数据源创建表格,同时提供列名。 例如,以下代码展示了如何使用二维数组创建一个简单的JTable: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; import java.util.*; public class SimpleTable { public SimpleTable() { JFrame f = new JFrame(); Object[][] playerInfo = { {"阿呆", new Integer(66), new Integer(32), new Integer(98), new Boolean(false)}, {"阿强", new Integer(82), new Integer(69), new Integer(95), new Boolean(true)} }; String[] columnNames = {"姓名", "得分", "年龄", "体重", "是否退役"}; JTable table = new JTable(playerInfo, columnNames); f.add(new JScrollPane(table)); f.pack(); f.setVisible(true); } } ``` 在这个例子中,我们创建了一个JTable,其中包含了两行玩家数据,每个玩家有五个属性:姓名、得分、年龄、体重和是否退役。 2、JTable 功能 JTable 支持以下功能: - 数据绑定:可以绑定各种数据源,如Vector或数组,也可以自定义TableModel。 - 表格操作:支持添加、删除、修改单元格数据。 - 多选:通过ListSelectionModel实现多行或单元格选择。 - 表头定制:可以设置列宽、排序和过滤。 - 事件处理:通过监听TableModelListener和MouseListener等,响应表格变化和用户交互事件。 - 拖放操作:支持拖放功能,可以重新排列列或者移动数据。 - 鼠标和键盘导航:用户可以通过键盘和鼠标进行导航和编辑。 3、自定义JTable 为了满足特定需求,开发者可以自定义JTable的行为。这通常包括: - 自定义TableModel:实现自己的TableModel类,以控制数据的存储和显示方式。 - 自定义Renderer和Editor:通过设置TableCellRenderer和TableCellEditor,可以改变单元格的显示样式和编辑行为。 - 自定义列操作:可以添加、移除、调整列的宽度,甚至隐藏列。 JTable 是Swing中构建数据密集型应用的核心组件,通过灵活的构造函数和丰富的API,开发者可以轻松地创建功能强大的表格界面。