Общение между классами - PullRequest
1 голос
/ 05 мая 2010

У меня есть форма, которая разделена на два класса. Каждый класс представляет виджеты на части формы. Каков наилучший способ разрешить этим классам обмениваться данными друг с другом и обновлять друг друга.

Пример: Кнопка в классе А нажата. Обновить текстовое поле в классе C

Ответы [ 4 ]

3 голосов
/ 05 мая 2010

Это очень коротко, что вы можете сделать:

public class ButtonFrame extends JFrame implements ActionListener
{
     private TextFieldFrame frame;

     public ButtonFrame(TextFieldFrame frame)
     {
         this.frame = frame;
         // init your components and add this as actionlistener to the button
         ....
     }

     public void actionPerformed(ActionEvent evt)
     {
         frame.notifyButtonPressed();
     }
}

Другой класс:

public class TextFieldFrame extends JFrame
{
     private JTextField field = ...; // init in your constructor

     public void notifyButtonPressed()
     {
         field.setText("Yes man!! The button is pressed by the user!");
     }
}

Опять же, это очень коротко, что вы должны сделать.
Вы также можете работать с шаблоном Singleton, но это лучший способ.

0 голосов
/ 05 мая 2010

Посмотрите на Шаблон посредника , он может дать вам некоторые идеи.

Кроме того, целью платформы JFace Databinding является синхронизация значений между объектами, хотя я нахожу ее плохо документированной и не слишком интересной для использования. JFace_Data_Binding

0 голосов
/ 05 мая 2010

Не думай, виджет. Дизайн вашего приложения на моделях. Имейте виджеты как окна на этих моделях. (И не расширяйте классы без необходимости.)

0 голосов
/ 05 мая 2010

Вы можете создать класс, содержащий все ваши объекты формы. Все классы форм знают родительский класс и общаются через него.

Если кнопка нажата в классе A, класс A вызывает метод в родительском классе, а родительский класс уведомляет класс C об обновлении своего текстового поля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...