我在MVC框架的View类上有3组JMenuItem
。我想在controll类EventController
中引用它们。有人能告诉我这是实现的吗?以下是事件控制器。类EventView由JMenuItem
addEvent,editEvent,deleteEvent组成,如何在Controller类中为它们执行侦听器。有人可以演示在我的Controller类之上使用示例代码吗?
public class EventController implements ActionLister {
private EventModel model;
private EventView view;
private ActionListener actionListener;
public EventController(EventModel model, EventView view){
this.model = model;
this.view = view;
}
第二个问题,我只能从JTable
类本身更新View
,所以
public void updateEventTable() {
try {
String sql = "SELECT date as 'Date',eventName as 'Name', time as 'Time' FROM Event";
pst = conn.prepareStatement(sql);
rs = pst.executeQuery();
tableEvent.setModel(DbUtils.resultSetToTableModel(rs));
tableEvent.getColumnModel().getColumn(0).setPreferredWidth(80);
tableEvent.getColumnModel().getColumn(1).setPreferredWidth(170);
tableEvent.getColumnModel().getColumn(2).setPreferredWidth(110);
}
catch (Exception e ) {
JOptionPane.showMessageDialog(null, e);
} finally {
try {
rs.close(); pst.close();conn.close();;
} catch(SQLException e){}
}
}
在View Class中使用代码这是不好的做法,理想情况下应该在模型中,但是如何执行此操作可以告诉我。这些概念对我来说是新的,我想学习。由于JTable
我觉得很难
答案 0 :(得分:3)
让您的模型导出Action
的实例,可以根据需要添加到菜单和按钮中。因为数据库访问本质上是异步的,所以让每个这样的操作使用worker thread在后台查询数据库,同时在EDT上更新表模式。另请参阅A Swing Architecture Overview有关Swing组件和模型之间的关系。
附录:你能告诉我一个代码示例吗?