Как лучше всего связать ваше приложение с Swing GUI? - PullRequest
1 голос
/ 03 мая 2009

Если у меня есть Swing GUI класс и приложение, как мне управлять связью между этими объектами? Должен ли я передать ссылку на объект GUI на приложение или ссылку на приложение на GUI?

Пример:

public class App{

public App()
{
   GUI gui = new GUI(this)
}

}

или

public GUI{
public GUI()
{
   App gui = new App(this)
}
}

Ответы [ 3 ]

2 голосов
/ 03 мая 2009

Посмотрите на шаблон MVC . В идеале вы хотите представить свое приложение таким образом, чтобы его могли использовать различные компоненты графического интерфейса (представьте себе позже представление веб-приложения или сервлета или интерфейс командной строки). Это требование запрещает вашему приложению иметь неявные знания Swing.

1 голос
/ 27 марта 2010

Все текущие ответы хороши, но здесь есть одна очень важная вещь: у вас есть тег «Многопоточный», но никто еще не обратился к нему. Вы определенно хотите думать о «C» в MVC как о чем-то, что будет связано с многопоточностью, и, возможно, вы даже захотите следовать шаблону проектирования диспетчера через интерфейс диспетчера и, возможно, даже интерфейс просмотра - использование интерфейсов поможет расширить ваши возможности даже больше для будущего рефакторинга или даже редизайнов. В прошлом я использовал java.util.observer и java.util.observable - оригинальный шаблон MVC, когда-либо существовавший в Java:) - для решения проблем со связью. Только не забывайте блокировать ваш основной поток, иначе ваш графический интерфейс будет зависать. Да, MVC - хорошее начало, но в описанном выше приложении-> GUI есть нечто большее, чем просто MVC. Представьте, что весь GUI - это представление вашего приложения. Модель, скорее всего, будет неким набором данных (DataBase, flatfile). , информация о состоянии) и контроллер вашего приложения. Имейте в виду, что GUI, скорее всего, будет по крайней мере иметь интерфейс к нему.

0 голосов
/ 03 мая 2009

Да, шаблон MVC поможет. Вы действительно хотите удалить тесную связь между двумя компонентами. Или, по крайней мере, идти с последним, что означает:

public GUI {
    public GUI() {
         App gui = new App(this)
    }
}

Таким образом, по крайней мере логика вашего приложения не зависит или не связана с вашим графическим интерфейсом.

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