Передача JMenuItem в класс контроллера

У меня есть 3 набора JMenuItem в классе View инфраструктуры MVC. Я хочу сослаться на них в классе управления 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, в идеале должно быть в Model, но как это сделать, вы можете показать мне. Концепции являются новыми для меня и хотят учиться. Потому что JTable Мне очень сложно

1 ответ

Решение

Позвольте вашей модели экспортировать экземпляры Action это может быть добавлено к меню и кнопкам по мере необходимости. Поскольку доступ к базе данных по своей сути асинхронный, пусть каждое такое действие использует рабочий поток для запроса базы данных в фоновом режиме при обновлении табличного режима в EDT. См. Также Обзор архитектуры Swing относительно отношений между компонентами и моделями Swing.

Приложение: Можете ли вы показать мне пример кода?

  • FileMenu это очень простой пример использования Action инкапсулировать функциональность.

  • Приведенный здесь пример использует Action более широко в JToolBar,

  • JHotDraw Приведенный здесь очень сложный пример, который изменяет доступный Action случаи, основанные на контексте, как обсуждено здесь.

  • Этот пример предлагает общий экзамен MVC в Swing.

Другие вопросы по тегам