привязывать конец к графическому интерфейсу Java - PullRequest
5 голосов
/ 08 августа 2011

Я недавно начал разрабатывать графический интерфейс в Swing, чтобы поставить поверх простого клиента XMPP, который я написал в Java, используя API Smack. Проблема, с которой я сталкиваюсь, состоит в том, чтобы попытаться выяснить, как именно преобразовать нажатие кнопок в действия на клиенте, не заставляя писать код спагетти, чтобы связать все воедино.

Существуют ли какие-либо примеры / учебные пособия, о которых вы знаете, которые покажут более сложные свинговые приложения, чем "ооо, я положил кнопку на экран"? К сожалению, мой Google-фу, кажется, только возвращает бесчисленные варианты этих простых уроков начального уровня. Я бы с радостью принял известное вам приложение с открытым исходным кодом, которое я могу исследовать. Даже просто такая тема, как "EventHandlers", для начала была бы удивительной.

Я прошу прощения за неопределенность моего вопроса, но я чувствую, что на данный момент я просто ищу символы в Google. (IE, если вы уже не знаете, как называется ввод символа в Google, бесполезно). Если мне было неясно, пожалуйста, укажите где и я сделаю все возможное, чтобы уточнить. Спасибо.

Ответы [ 4 ]

2 голосов
/ 08 августа 2011

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

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

Еще один общий совет, который я бы дал, - изучитьна Model-View-Controller, как предлагали другие авторы (хотя технически Swing объединяет View и Controller вместе).Создайте модели, которые представляют данные, которые вы хотите, чтобы пользователь мог манипулировать, и используете ваши собственные пользовательские события и слушателей для передачи этой информации в представление.Другими словами, не бойтесь переопределить EventObject для представления различных изменений в состоянии вашего приложения.Это также позволяет вам иметь один объект модели (в вашем случае, возможно, список контактов), в который вы можете подключить различные виды без изменения базовой структуры.

О, и еще один кусочек пуха -если ваши действия не требуют повторного использования, хороший анонимный внутренний класс, производный от ActionListener, более удобочитаем, чем сам класс представления ActionListener.Каждый раз, когда я вижу component.addActionListener(this), я вздрагиваю.

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

1 голос
/ 08 августа 2011

Я предлагаю использовать BeanBinding , который можно легко настроить с помощью Google WindowBuilder .

[обновление] только что нашла эту хорошую статью о JSR 295 , которая должна быть полезной.

1 голос
/ 08 августа 2011

Вы можете начать с Используя текстовые компоненты и этот простой пример .

1 голос
/ 08 августа 2011

Попробуйте

  • Контроллер представления модели
  • Presenter представления модели
  • Observer

Это должно помочь вам начать работу в Google.

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