Инструкции по GUI для колебания

Существует ли ресурс, где дизайн GUI для колебания объяснен? Как лучшие практики и такой.

10
задан Carlos Blanco 25 February 2010 в 20:20
поделиться

6 ответов

json и js - два разных типа ответа, и они определяются как различные типы MIME в Rails

Mime::Type.register "text/javascript", :js, %w( application/javascript application/x-javascript )
Mime::Type.register "application/json", :json, %w( text/x-json application/jsonrequest )

Даже если Json можно считать подмножеством JavaScript, не все отклики JavaScript на самом деле являются откликами Json.

Вы можете ответить Json и Js в одном действии.

Например, у вас может быть действие, которое отвечает Json на вызов API и JavaScript (возможно, с использованием RJS) на внутренний вызов Ajax.

-121--1410669-

Проблема в том, что arrStartMembers представляет собой массив последовательностей, в то время как tb. Текст - это просто последовательность. Нужно назначить тб. Текст к индексу в массиве. Для этого используйте свойство indexer , которое выглядит как число в квадратных скобках сразу после имени переменной массива. Число в скобках является отсчитываемым от 0 индексом в массиве, в котором требуется задать значение.

arrTeamMembers[0] += tb.Text;
-121--4121210-

Рекомендации по проектированию уже не очень выполняются, потому что Swing работает на множестве различных платформ. Сан написал несколько давно, и никогда не менял их, так что я бы сказал, прочитал, если вы думаете, что это поможет. Вот некоторые практические знания о разработке свинга.

  • Никогда не используйте GridBagLayout. Захват таблицы Макет. Это существенно упрощает компоновку для пользователя Swing UI. GridBagLayout - дьявол.
  • Не переставайте встраивать компоненты, чтобы получить правильную компоновку (например, embedded AxLayout и т.д.). Как это сделать, см. пункт 1. На экране имеются проблемы с производительностью, связанные с компонентами.
  • Разделите программу по линиям MVC. Swing имеет разделение View и Model, но в больших программах View (т.е. подклассы Swing Component) превращается в psuedo View/Controller, что только усложняет повторное использование и обслуживание. Это быстро превращается в код спагетти. Сломайте привычку и создайте класс Controller, который НЕ расширяет Swing. То же самое касается модели (без качелей). Контроллер создает экземпляры высокоуровневых классов представлений и сам проводит прослушивание представлений.
  • Упрощение всплывающих диалоговых окон с использованием только простых панелей. Не подкласс JDialog. Создайте класс диалогового окна многократного использования, содержащий панель, которую можно использовать, например, JOpityPane. Панели не будут привязаны только к диалоговым окнам и могут использоваться повторно. Очень легко, когда ты работаешь в этом пути.
  • Избегайте использования actionlistener/command. Это старый мусор и не очень многоразовый. Используйте AbstractAction (классы anon являются вашим выбором. У меня нет проблем с ними). AbstractAction инкапсулирует текст, значок, мнемонику, акселераторы, многократно используемые в кнопках, всплывающих окнах, меню, маркерах управления включенными/отключенными состояниями, могут совместно использоваться несколькими компонентами, а также является основой для InputMap/ActionMaps для сопоставления штрихов клавиатуры с действиями. ActionMaps предоставляет массу энергии для повторного использования.
  • Лучше всего просматривать события отправки на контроллер. Я говорю не о мусоре мыши/клавиатуры, а о событиях высокого уровня. Например, NewUserEvent, AddUserEvent, StartUserEvent и т.д. Попросите геймпада прослушать эти бизнес-события высокого уровня.Это будет способствовать инкапсуляции, сохраняя проблемы представления (следует ли использовать таблицу, список, дерево или что-то еще?) отделенными от потока приложения. Контроллер не волнует, нажал ли пользователь кнопку, меню или флажок.
  • События не только для контроллера. Качели - это программирование событий. Ваша модель будет делать вещи вне SwingThread или в фоновом режиме. Отправка событий обратно на контроллер - это очень простой способ заставить его реагировать на происходящие на уровне модели вещи, которые могут использовать потоки для выполнения работы.
  • Понимание правил многопоточности Swing! Вы удивитесь, как мало кто понимает, что Swing является однопоточным и что это означает для многопоточных приложений.
  • Понять, что делает SwingUtilities.invokeLater ().
  • Никогда * не используйте SwingUtilities.invokeAndWait (). Ты делаешь это неправильно. Не пытайтесь писать синхронный код при программировании событий. (* Есть некоторые угловые случаи, когда invokeAndWait () является приемлемым, но 99% времени вам не нужно invokeAndWait ()).
  • Если вы начинаете новый проект с нуля, пропустите Swing. Он старый, и все кончено. Sun никогда не заботилась о клиенте так, как сервер. Свинг поддерживается плохо, и не было достигнуто большого прогресса с тех пор, как он был впервые написан. JavaFX ещё нет, и страдает от множества грехов Свинга. Я бы сказал, посмотрите на Apache Pivot . Много новых идей и лучшего дизайна и активного сообщества.
35
ответ дан 3 December 2019 в 13:21
поделиться

В больших проектах Swing я разделяю приложение следующим образом:

  • Имею один класс для каждого элемента графического интерфейса, например JPanel, JDialog и т. Д.

  • Используйте отдельный пакет для каждого экрана, особенно если вам нужно реализовать настраиваемые модели таблиц или другие сложные структуры данных

  • Не используйте анонимные и внутренние классы, вместо этого реализуйте ActionListener и проверьте там ActionEvent.getActionCommand ().

РЕДАКТИРОВАТЬ: Если вы предпочитаете учебник или введение, вы можете начать здесь

5
ответ дан 3 December 2019 в 13:21
поделиться

Вы можете проверить идеи, лежащие в основе FEST - системы тестирования колебаний. Его главный сайт здесь , а проект размещен здесь

1
ответ дан 3 December 2019 в 13:21
поделиться

Вы можете найти некоторые из лучших практик в главе 4 Professional Java JDK6 Edition

alt text

1
ответ дан 3 December 2019 в 13:21
поделиться

Я написал список рекомендаций здесь .

5
ответ дан 3 December 2019 в 13:21
поделиться

Возможно, это не совсем то, что вы ищете, но не помешает взглянуть на Руководство по дизайну внешнего вида и ощущений Java

5
ответ дан 3 December 2019 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: