1

JMenuItem在 MVC 框架的 View 类上有 3 组。我想在控件类中引用它们EventController。有人可以告诉我这是实现的吗?下面是事件控制器。EventView 类由JMenuItemaddEvent、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;
}

第二个问题,我只能JTableView类本身更新 a ,所以

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){}
    }
}

这是在视图类中有代码的不好的做法,理想情况下应该在模型中,但是你可以告诉我如何做到这一点。这些概念对我来说是新的并且想学习。因为JTable我觉得很难

4

1 回答 1

3

让您的模型导出实例Action可以根据需要添加到菜单和按钮中。因为数据库访问本质上是异步的,所以让每个这样的操作都使用一个工作线程在后台查询数据库,同时更新 EDT 上的表模式。另请参阅有关 Swing 组件和模型之间关系的 Swing 架构概述。

附录:你能给我看一个代码示例吗?

  • FileMenu是一个非常基本的使用Action来封装功能的例子。

  • 此处引用的示例ActionJToolBar.

  • JHotDraw此处引用的 是一个非常复杂的示例,它Action根据上下文更改可用实例,如此所述。

  • 示例提供了对 Swing 中 MVC 的一般检查。

于 2013-01-17T04:26:38.373 回答