• Пример JAVA-приложения с использованием MVC?

    serso
    @serso
    Например:
    class MyView extends JFrame {
        ...
        JButton button = new JButton();
        button.addMouseListener(new MouseAdapter() {
            public void mouseClicked(MouseEvent e) {
                Controller.getInstance().fireEvent(Events.OPEN_WINDOW);
            }
        });
        ...
    }
    


    В контроллере:
    void fireEvent(Event event) {
        for (Listener listener: listeners) {
            listener.onEvent(event);
        }
    }
    


    Сам контроллер может быть event слушателем:

    Controller implements Listener {
    ...
       void onEvent(Event event) {
            if ( event.equals(Events.OPEN_WINDOW) ) {
                // put here code for initializing and opening the window
                // NOTE: new window also can be listener of specific events
            }
        }
    ...
    }
    


    И работа с моделью:
     class MyView extends JFrame {
        ...
        JButton button = new JButton();
        button.addOnTextChangeListener(new TextChangeListener() {
            public void textChanged(TextChange e) {
                Controller.getInstance().fireEvent(new Event(Events.TEXT_CHANGE, e.getNewText()));
            }
        });
        ...
    }   
    
    Controller implements Listener {
    ...
       void onEvent(Event event) {
            if ( event.equals(Events.TEXT_CHANGE) ) {
                // find and update the module
                getTextContainer().setText(event.getData());
            }
        }
    ...
    }
    


    Естественно, TextChangeListener придуман для упрощения понимания, не знаю есть ли такой в Swing'e
    Ответ написан
    9 комментариев