(swing读书笔记)JTable简介(下)
来源:互联网 发布:迅雷校园招聘java笔试 编辑:程序博客网 时间:2024/05/21 13:54
(swing读书笔记)JTable简介(下)
by cszhao1980
六.Row
最初,JTable没有提供任何“Row”相关的类来控制Row,与Row相关的大量操作直接坐落在JTable和TableModel中。
后来,Swing提供了TableRowSorter来协助Row排序,其继承关系如下:
JAVA help中对RowSorter的描述如下:
RowSorter 提供排序和过滤的基础。创建和安装了 RowSorter 之后,您几乎不需要直接与它交互。有关 JTable 的 RowSorter 具体实现,请参阅TableRowSorter。
RowSorter 的主要功能在于,提供两个坐标系统之间的映射关系:视图的映射关系(例如 JTable)和底层数据源(通常是模型)的映射关系。
视图调用 RowSorter 的以下方法:
- toggleSortOrder — 当发生了触发排序操作的恰当用户行为时,视图调用此方法。例如,用户在表中单击列标题时。
- 其中一个模型更改方法 — 当底层模型发生了更改时,视图调用一个模型更改方法。由于在如何交付事件方面可能存在顺序依赖关系,因此在调用这些方法之一之前 RowSorter 不应该更新其映射关系。
因为视图大量使用了 convertRowIndexToModel、convertRowIndexToView 和 getViewRowCount 方法,所以这些方法需要很快的运行快速。
RowSorter 通过 RowSorterListener 提供更改的通知。它发送两种类型的通知:
- RowSorterEvent.Type.SORT_ORDER_CHANGED — 通知侦听器排序顺序发生了更改。此通知通常后跟一个通知,表示排序发生了更改。
- RowSorterEvent.Type.SORTED — 通知侦听器由 RowSorter 维护的映射关系已经以某种方式发生了更改。
RowSorter 实现与底层模型通常没有一对一的映射关系,但它们也可以这样做。例如,如果数据库进行排序操作,则可以通过数据库调用 toggleSortOrder (在后台线程上),并重写映射方法以返回传入的参数。
RowSorter 的具体实现需要引用一个模型,比如 TableModel 或 ListModel。JTable 和 JList 之类的视图类也将引用该模型。要避免排序依赖关系,RowSorter 实现不应该在模型上安装侦听器。而是在模型更改时,视图类调用 RowSorter。例如,如果在 TableModel 中更新了一行,则 JTable 调用 rowsUpdated。模型更改时,视图可以调用任意以下方法:modelStructureChanged、allRowsChanged、rowsInserted、rowsDeleted 和 rowsUpdated。
七.JTable事件
首先是三种模型事件:
(1) TableModelEvent;
单元值变化、单元被更新、表格结构变化、行被插入、删除、更新。
(2) TableColumnModelEvent;
列被插入、删除、移动,列边距发生变化,列选取发生变化
(3) ListSelectionEvent;
行选取发生变化
另外,“~CellEditor”的编辑停止、取消时,会激发ChangeEvent。
JTable不提供任何添加监听器的方法,这些监听器必须添加在模型或者CellEditor上。
- (swing读书笔记)JTable简介(下)
- (swing读书笔记)JTable简介(上)
- (swing读书笔记)JTable简介(中)
- (swing读书笔记)JTree简介(下)
- (swing读书笔记)JTree简介(上)
- (swing读书笔记)JTree简介(中)
- (swing读书笔记)Undo/Redo(下)
- Swing中 JTable用法简介之宏观篇(包括与数据库的连接)
- Swing JTable例子(如何创建一个JTable)
- Swing基本组件使用4(JTable)
- (swing读书笔记)引子
- (swing读书笔记)ProgressMonitor
- Java Swing JTable
- Java Swing-JScrollPane,JTable
- swing jTable 自定义单元格
- Swing JTable复杂报表
- swing jtable常用
- swing jtable表头设置
- (swing读书笔记)JTable简介(上)
- SQL ERROR 17002
- (swing读书笔记)JTable简介(中)
- linux基础之文件锁,读写锁相关
- 关于bcb6.0编译错误:[Linker Fatal Error] Fatal: Illegal option
- (swing读书笔记)JTable简介(下)
- const常用小结
- 共享内存区
- (swing读书笔记)JTree简介(上)
- C基础
- <<春·加薪>>
- ksoftirqd内核线程
- 四极管:转wince上ov3640摄像头的一些问题
- (swing读书笔记)JTree简介(中)