建立一个 Derby 日历,第 3 部分: 使用事务和锁定(下)
2010-04-19 00:00:00 来源:WEB开发网这里增加了 Add Event 按钮及其监听器,如 图 4 所示。监听器调用 EventClass 来添加事件,传递应用程序启动时创建的 Connection、用户输入的信息和日历选择器中当前显示的日期。然后设置上方日历选择器中的日期,将数据表添加到框架右侧。
图 4. Add Event 按钮
查看原图(大图)
建立表格
使用该界面可以添加所有的事件,但是如果用户不能显示事件就毫无意义了。前面已经提到,应用程序使用与表模型关联的表格来显示某一天的数据(参见 清单 25)。
清单 25. 添加显示表格
...
private JPanel layoutRightPanel() {
JPanel tablePanel = new JPanel(new BorderLayout());
JPanel topPanel = new JPanel();
topPanel.setLayout(new BoxLayout(topPanel, BoxLayout.PAGE_AXIS));
topPanel.add(new JLabel("<html><h3>Daily Event View</h3>"));
tablePanel.add(topPanel, BorderLayout.NORTH);
this.eventModel = new EventTableModel();
reloadTableModel();
final JTable eventTable = new JTable(this.eventModel);
tablePanel.add(new JScrollPane(eventTable), BorderLayout.CENTER);
return tablePanel;
}
private JComponent layoutMenuBar() {
JMenuBar menuBar = new JMenuBar();
return menuBar;
}
...
public void propertyChange(PropertyChangeEvent evt) {
}
private void reloadTableModel() {
SwingUtilities.invokeLater(new Runnable() {
public void run() {
try {
CalendarFrame.this.getContentPane().setCursor(
Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
CalendarFrame.this.eventModel.reloadEventsForDate(
CalendarFrame.this.conn,
CalendarFrame.this.calendarPicker.getDate());
} finally {
CalendarFrame.this.getContentPane().setCursor(
Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR));
}
}
});
}
}
更多精彩
赞助商链接