建立一个 Derby 日历,第 3 部分: 使用事务和锁定(下)
2010-04-19 00:00:00 来源:WEB开发网如果单元格是可编辑的 —— 可使用行列信息为每个单元格设置该属性 —— GUI 需要知道如果用户编辑了该单元格那么该如何做。在这里 GUI 为适当的 EventClass 对象设置适当的数据。
行映射到对象
当然,GUI 需要知道如何建立表中的行与特定对象的关系(参见 清单 18)。
清单 18. 行映射到对象
...
events[rowIndex].setRemindersTo(aValue.toString());
break;
}
}
}
public EventClass getEventAtRow(int rowIndex) {
if ((this.events != null) && (rowIndex < this.events.length)) {
return this.events[rowIndex];
}
return null;
}
}
这里因为使用的是数组,所以非常简单。
刷新表
最后,GUI 需要知道如何刷新自身,如 清单 19 所示。
清单 19. 刷新模型
...
public class EventTableModel extends AbstractTableModel {
String[] columns = { "Title", "Description", "Reminders To" };
EventClass[] events;
public void reloadEventsForDate(Connection conn, Date date) {
events = Calendar.getEvents(conn, date);
fireTableDataChanged();
}
public int getRowCount() {
if (events != null) {
...
reloadEventsForDate() 方法接受两个参数:一个连接和一个日期,使用 Calendar 类得到相应的事件数组。然后调用 fireTableDataChanged() 方法,该方法继承自 AbstractTableModel 类。该方法知道如何使用已定义的读方法,如 getColumnCount() 和 getValueAt() 来显示表。
更多精彩
赞助商链接