Можно ли определить свой собственный «контроллер» в Window Builder для Eclipse? - PullRequest
3 голосов
/ 07 октября 2011

Я хотел бы использовать Window Builder и использовать парадигму MVC одновременно. Сложно работать со сложным окном, когда Window Builder добавляет весь код в один файл.

Я бы хотел, чтобы созданный файл по умолчанию был 'view'.

Я хотел бы сохранить свои управляющие действия (прослушиватели событий) в классе 'controller'. Есть ли способ заставить Window Builder автоматически помещать прослушиватели событий в класс по вашему выбору, а не добавлять в один монолитный файл?

Ответы [ 2 ]

2 голосов
/ 07 октября 2011

Я не знаю, как работает Window Builder Eclipse, но я знаю, что NetBean создает анонимные внутренние классы, которые вызывают пользовательский метод для каждой кнопки, а затем позволяют программисту изменять тело пользовательского метода.Если Eclipse похож, то этот пользовательский метод можно просто вызвать методом вашего объекта Control.Конечно, это добавляет слой косвенности, но это небольшая цена, которую нужно заплатить, чтобы дать вам полный контроль над вашим контролем.

Например, если я создаю JButton с именем «myButton», а затем заставлю генератор кода создатьдействие для моей кнопки, он создаст этот код:

    myButton.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent evt) {
            myButtonActionPerformed(evt);
        }
    });

и позволит мне получить доступ и написать код в сгенерированном методе, myButtonActionPerformed:

private void myButtonActionPerformed(java.awt.event.ActionEvent evt) {
   // TODO add your handling code here:
}

И внутри этого методаЯ бы вызвал метод моего элемента управления:

private void myButtonActionPerformed(java.awt.event.ActionEvent evt) {
   if (myControl != null) {
      myControl.myButtonAction();
   }
}

Класс элемента управления мог бы выглядеть примерно так:

class MyControl {

    void myButtonAction() {
        //TODO: implement control code
    }

}

Для графического интерфейса потребовался бы метод setControl (MyControl myControl), чтобы «внедрить»управление в GUI.

1 голос
/ 20 декабря 2011

Еще один способ разделения вашего кода - использовать мастер для создания JPanels в качестве собственных элементов управления, а затем добавить их в макет в главном окне, используя инструмент «Выбор компонента» (выглядит как три компонента) из палитры.Легко и намного чище.Хотя я понимаю, что это все еще объединяет "V" и "C" в MVC ...

...