浏览 5794 次
锁定老帖子 主题:javax.swing 类 JTable
精华帖 (0) :: 良好帖 (0) :: 新手帖 (3) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2009-03-11
最后修改:2009-03-11
类 JTable java.lang.Object java.awt.Component java.awt.Container javax.swing.JComponent javax.swing.JTable public class JTableextends JComponentimplements TableModelListener, Scrollable, TableColumnModelListener, ListSelectionListener, CellEditorListener, AccessibleJTable 用来显示和编辑规则的二维单元表。有关面向任务的文档和使用 JTable 的示例,请参阅《The Java Tutorial》中的 How to Use Tables 一节。 JTable 有很多用来自定义其呈现和编辑的设施,同时提供了这些功能的默认设置,从而可轻松地设置简单表。例如,要设置一个 10 行 10 列的表: TableModel dataModel = new AbstractTableModel() { public int getColumnCount() { return 10; } public int getRowCount() { return 10;} public Object getValueAt(int row, int col) { return new Integer(row*col); } }; JTable table = new JTable(dataModel); JScrollPane scrollpane = new JScrollPane(table); 注意,如果要在单独的视图中(在 JScrollPane 外)使用 JTable 并显示表标题,则可以使用 getTableHeader() 获取并单独显示它。 设计使用 JTable 的应用程序时,要严格注意用来表示表数据的数据结构。DefaultTableModel 是一个模型实现,它使用一个 Vector 来存储所有单元格的值。该 Vector 由包含多个 Object 的 Vector 组成。除了将数据从应用程序复制到 DefaultTableModel 中之外,还可以 TableModel 接口的方法来包装数据,这样可将数据直接传递到 JTable,如以上示例所示。这通常可以提高应用程序的效率,因为模型可以自由选择最适合数据的内部表示形式。在决定使用 AbstractTableModel 还是使用 DefaultTableModel 方面有一个好的实践经验,即在创建子类时使用 AbstractTableModel 作为基类,在不需要创建子类时则使用 DefaultTableModel。 在发行的源代码演示部分中的 "TableExample" 目录内给出了许多 JTable 用法的完整示例,包括如何使用 JTable 来提供一个可编辑的数据视图(数据来自数据库),以及如何修改正显示的列以使用特殊的渲染器和编辑器。 JTable 使用惟一的整数来引用它所显示的模型的行和列。JTable 只是采用表格的单元格范围,并在绘制时使用 getValueAt(int, int) 从模型中检索值。 默认情况下,在 JTable 中对列进行重新安排,这样在视图中列的出现顺序与模型中列的顺序不同。但这根本不影响模型的实现:当列重新排列时,JTable 在内部保持列的新顺序,并在查询模型前转换其列的索引。 因此编写 TableModel 时,不必侦听列的重排事件,因为将在模型自己的坐标系统中查询它,而不管视图中发生了什么情况。在示例部分中有一个排序算法的演示,此演示正是使用了此技术在另一个坐标系统中进行排序,其中更改行的顺序,而不更改列的顺序。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2009-03-12
定制JTable能单独算一个项目了
|
|
返回顶楼 | |