传递的JMenuItem到控制器类(Passing JMenuItem to Controller

2019-08-07 03:18发布

我有3套的JMenuItem上一个视图类的MVC框架。 我想引用他们在控制研究类EventController 。 可有人告诉我这是实现? 以下是事件控制器。 类使用EventView组成JMenuItem的addEvent,editEvent,deleteEvent,我怎么做他们的听众在控制类。 有人可以证明使用我的控制器类的顶部的示例代码?

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类本身,所以

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我觉得很困难

Answer 1:

让你的模型导出实例Action ,可以根据需要添加到菜单和按钮。 由于数据库访问本质上是异步的,让每一个这样的动作使用一个工作线程来查询数据库在后台更新的EDT表模式。 又见一个Swing架构概述有关Swing组件和模型之间的关系。

附录: 你能告诉我一个代码示例?

  • FileMenu是使用一个非常简单的例子Action封装功能。

  • 引用的例子在这里使用的Action更广泛JToolBar

  • JHotDraw ,引在这里 ,是一个非常复杂的例子,改变现有的Action实例基于背景下,作为讨论在这里 。

  • 这个例子提供了MVC的秋千一般检查。



文章来源: Passing JMenuItem to Controller Class