java-gui создание подходов через файлы описания? - PullRequest
0 голосов
/ 13 октября 2010

У меня есть следующее требование для графического интерфейса, чтобы у пользователя было несколько доступных действий.
В настоящее время реализована серия кнопок J, которые нажимает пользователь.
Но действий много, и в каждой версии будет предложено больше «действий».
Я не уверен, как это лучше представить / сделать в графическом интерфейсе.
Я прочитал, что есть способы сформировать графический интерфейс, описывающий соответствующую информацию в XML-файле.
Я использую Netbeans и свинг. Является ли XML хорошей идеей для описания доступных действий и, например, создания одинакового количества кнопок? Если да, как бы я начал с этого? Кроме того, jtoobar будет хорошей идеей для действий? Я имею в виду добавить столько кнопок, сколько необходимо в Jtoolbar.
Я думаю, что это общий вопрос, но я не имею опыта работы с GUI. Любая помощь будет оценена!

Спасибо.

Ответы [ 3 ]

1 голос
/ 15 октября 2010

Кажется, что есть две отдельные проблемы:

  1. Как описать и создать большое количество действий?
  2. Как представить большое количество действий в GUI?

@ Том отвечает для № 1, а @ Фабио для № 2.

Вы можете использовать любой текстовый формат для № 1XML, CSV, все, что вам нравится.Это действительно хорошая идея отделить это от кода.XML отлично подходит для иерархических данных, поэтому он может быть излишним, если вам просто нужен плоский список:

<doc>
  <action name="Action 1" id="ACT1" description="blah blah" icon="icon1.gif"/>
  <action name="Action 2" id="ACT2" description="yada yada" icon="icon2.gif"/>
  ...
</doc>

Но анализ такого простого XML в основном бесплатный, так что вы можете просто использовать его.Вы не , однако вам необходим полнофункциональный инструментарий XML GUI, такой как SwiXML, если только вы не хотите добавлять в приложение много других виджетов GUI со сложным макетом.

Обратите внимание на атрибуты, которые у меня естьв приведенном выше примере.id будет соответствовать уникальной команде действия.Вы можете отобразить description и icon (я полагаю, вы уже используете значок) любым удобным для вас способом.Вы также можете иметь другие свойства, такие как мнемоника, ускоритель и т. Д., Когда использование XML начинает приносить свои плоды: вы можете добавлять произвольные нужные вам атрибуты.

Одним очевидным упущением в XML являются сами фактические действия.,Я не думаю, что вы должны поместить код Java в XML.Это побеждает разделение проблем.Вместо этого вы можете определить свой код действия общим способом (например, extension AbstractAction) и сопоставить их с идентификаторами действий.Если вы используете AbstractAction, вы можете легко сопоставить свои атрибуты с ключами свойств действий, такими как Action.NAME, Action.LONG_DESCRIPTION и т. Д.


Теперь вы проанализировали XML в список объектов действий.и вот второй вопрос: как вы их отображаете?

JList (на @Fabio) действительно самый эффективный способ.Он гораздо более компактен, чем целая куча отдельных кнопок, но в отличие от JComboBox вы можете видеть сразу несколько элементов и легко добавлять сортировку / поиск / фильтр.

Но список не очень гибкий.Вы можете использовать пользовательский ListCellRenderer для отображения значка и всплывающей подсказки (для описания), но вы начнете растягивать его, когда хотите сгруппировать элементы.

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

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

Теперь по поводу JToolBar, вы правы в том, что это стандарт, однако, как отмечается в комментарии Фабио, его нельзя использовать, когда у вас слишком много кнопок на панели инструментов (например, M $ Word перед лентой).

Однако было бы полезно использовать панель инструментов, чтобы позволить пользователю размещать действия по своему выбору на панели инструментов, как это делают большинство популярных настольных приложений.Вы можете использовать диалоговое окно «Настройка панели инструментов» или просто позволить пользователю перетаскивать элементы из вашего списка или таблицы.

К сожалению, многие из конструкций GUI, которые я упомянул выше, это , а не * 1055.* доступно в JDK.Вы можете найти их все (древовидную таблицу, поиск / фильтр, складную панель, настраиваемую панель инструментов и т. Д.) В отличных коммерческих JIDE библиотеках (отказ от ответственности: я не работаю на них, хотя иногда мне хочетсяДа, или вы можете найти альтернативы FOSS.

1 голос
/ 13 октября 2010

Я не знаю, правильно ли я понял ваш вопрос, но мне кажется, что подход JButton - не самый эффективный способ сделать это. Представьте, что количество действий становится действительно большим, слишком большое количество кнопок приводит к неинтуитивному и не привлекательному интерфейсу. В качестве альтернативы можно использовать JComboBox или JList, чтобы перечислить все действия, не требующие много места и имеющие одну кнопку «сделать!» выполнить действие.

Надеюсь, это было полезно;)

0 голосов
/ 13 октября 2010

Вопреки распространенному мнению около десяти лет назад, XML обычно не очень хорошая идея. Подходящим языком для выражения этого «программирования» является Java.

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