建立一个 Derby 日历,第 3 部分: 使用事务和锁定(下)
2010-04-19 00:00:00 来源:WEB开发网使用表模型
前面修改了后端。现在来看看前端。GUI 应用程序显示表中的事件,如果没有模型,这项任务就非常单调乏味。为了避免在讨论真正的界面时分心,我们来看看这些模型是如何工作的,这样后面就清楚是怎么回事了。
什么是表模型?
如果您曾经做过程序员,我告诉您需要显示一个表中的信息,那么您就知道需要采取一系列的步骤。需要安排不同的行和列,记录哪一行代表哪个对象,等等。如果还希望编辑表,那么要完成的任务清单就更长了。
问题在于这一系列活动都是固定的。如果知道应用程序中要在好几个地方做同样的事情,您可能就会决定建立某种自动化过程来简化工作。当然,毫不奇怪别人已经这样做了。事实上,这种模型的概念就是 Swing 的一部分,Swing 是组成 GUI 的 Java API。
应用程序使用 AbstractTableModel 对象告诉 GUI 如何执行动作,如填充表、响应数据的修改。该模型在创建表时设置(参见 清单 15)。
清单 15. 利用表模型
...
this.eventModel = new EventTableModel();
reloadTableModel();
final JTable eventTable = new JTable(this.eventModel);
tablePanel.add(new JScrollPane(eventTable), BorderLayout.CENTER);
...
EventTableModel 类中定义了这些行为,因此 eventTable 对象立刻知道要做什么。我们来看看这个类。
定义表
第一步是将该类定义为 AbstractTableModel 的子类和定义表本身的结构,如 清单 16 所示。
清单 16. 定义表本身
import java.sql.Connection;
import java.util.Date;
import javax.swing.table.AbstractTableModel;
public class EventTableModel extends AbstractTableModel {
String[] columns = { "Title", "Description", "Reminders To" };
EventClass[] events;
public int getRowCount() {
if (events != null) {
return events.length;
}
return 0;
}
public int getColumnCount() {
return columns.length;
}
public String getColumnName(int col) {
return columns[col];
}
}
更多精彩
赞助商链接