2009-10-18 3 views
2

В настоящее время я работаю над своим первым проектом программирования GUI на Java в качестве школьного задания. Я довольно хорошо знаком с настройкой классов и методов на Java, хотя с введением в программирование графического интерфейса я не уверен, как лучше всего это сделать.Лучший способ настроить Java GUI

Я настроил GUI в своем собственном пакете. Должен ли я создавать новый класс для каждого JPanel? Я приложил скриншот к тому, как выглядит мой графический интерфейс.

alt text http://www.aaronmoodie.com/gui.png

Любые советы по этому вопросу было бы действительно здорово.

+0

Я рекомендую ознакомиться с руководящими принципами человеческого интерфейса Apple. Они применяют double на OS X, но нет причин не следовать им и в кросс-платформенных графических интерфейсах. В частности, этот макет просит большего поля. –

+0

Спасибо, Боб, будет прочитано. –

+0

Я понимаю, что это просто задание, но проверьте свой ввод. Нет ничего, что можно было бы отложить в пользовательском интерфейсе, как слова с ошибками. «Cancle» и «Medial», вероятно, не то, что вы хотите. –

ответ

4

Это зависит от того, чего вы пытаетесь достичь. Например, я не обязательно создаю отдельный класс для каждого JPanel. Однако, если панель является настраиваемой (переопределенной) панелью или панелью, которая содержит много других компонентов, или содержит значительную функциональность, я помещаю ее в свой класс. Я пытаюсь разделить по функциональности, если это имеет смысл. Нет особых причин, я делаю это таким образом, кроме как после написания нескольких gui это, кажется, делает вещи проще и намного чище. Например, в приведенном выше примере, не зная о вашей программе. Я мог бы создать компонент с jPanel, меткой и списком для компонентов в первой строке вниз, таким образом, я мог бы повторно использовать компонент w/out, переписывая логику снова и снова.

+0

Спасибо broschb. Это дает мне немного руководства. Просто посмотрите на такие примеры, как http://www.codeproject.com/KB/java/Graphics.aspx, которые имеют большинство вещей в одном классе. Я просто подумал, что может быть более чистый способ сделать это ... но, я думаю, нет? –

2

Javabuilders - мой любимый способ делать простые графические интерфейсы. Вы объявляете свою иерархию элементов GUI + информацию о макете в файле YAML, что намного проще, чем прямое создание окон вручную и добавление их в их родительские элементы.

Я вообще не переопределяю стандартные классы GUI. Похоже, у вас есть куча JLabels, JButtons, JLists и JSpinners, некоторые из которых содержатся в JPanels. Вы можете отделить задачу от , создавая все эти окна должным образом в иерархии (которая не требует каких-либо пользовательских классов), из задачи управления их поведением, что довольно просто, добавив EventListeners к конкретным компонентам, которые вас интересуют управление.

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

+0

Спасибо за ссылку Джейсон. На данный момент у меня должен быть код, все, как для uni, но, возможно, посмотрим на это после. –

0

Если вы используете Eclipse, мне очень нравится построитель GUI Jigloo. Он бесплатный для некоммерческого использования и довольно разумно оценен для коммерческой лицензии.

Я стараюсь найти что-то вроде Jigloo, чтобы визуально настроить все мои компоненты и добавить заглушки для обработчиков событий, а затем снова открыть один и тот же файл в стандартном редакторе Java, чтобы поместить код в его основу. Хорошо работает для меня.

1

Убедитесь, что вы понимаете шаблон MVC, особенно в контексте Swing.

Расширение классов контейнеров поворота (например, JPanel), как правило, мотивируется добавлением семантики многократного использования к компоненту.

Кроме того, расширенный (верхний уровень JPanel) также является хорошим классом кандидатов для раскрытия функциональности «управления», которая управляет вложенными компонентами. Например, в вашем gui контейнер верхнего уровня может быть классом расширения, который имеет методы управления состоянием вложенных панелей на основе действий пользователя. (Но учтите, что вам необязательно расширять JPanel для управления состоянием вложенных компонентов).

Смежные вопросы