Понимание разработки Java GUI, управления и настройки JComponents - PullRequest
1 голос
/ 22 марта 2011

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

Ясно и просто, я не мог делать ничего, что хотел, я хотел создать хороший чистый макет, но все выглядело не так, как хотелось, когда вы максимизировали его. JButton были огромными, когда их помещали в GridLayout, или они занимали весь ряд, когда я четко указывал размер кнопки и т. Д. Это была одна головная боль за другой при разработке Java-интерфейса.

С Microsoft WPF / XAML пользовательский интерфейс стал более простым, он выглядел как HTML / CSS. Настройка ширины, высоты, поля и отступов - это прекрасно, знание того, где будут находиться мои компоненты, облегчает работу. И вы даже можете создать собственный внешний вид.

Я хотел бы знать, есть ли у вас, ребята, какие-нибудь советы и ресурсы для кого-то, начинающего разработку Java GUI. И единственное, чего я не получаю, - это запускать новые предметы с помощью JFrame, то есть игры.

При запуске вы направляетесь к панели с 4 кнопками.

Играть в игру - открывает новую панель для игры. Лобби - переводит вас в чат, как интерфейс и т. д.

Должны ли это быть панели? Или больше JFrames, например, когда пользователь нажимает кнопку, я запускаю Play Game JFrame и затем закрываю меню JFrame. У меня действительно нет идей с Java guis.

Ответы [ 4 ]

3 голосов
/ 22 марта 2011

Убедитесь, что вы понимаете и используете соответствующие менеджеры по расположению. Этот учебник по Swing очень полезен для изучения того, как работает каждый: http://download.oracle.com/javase/tutorial/uiswing/layout/visual.html

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

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

2 голосов
/ 23 марта 2011

Прежде всего, одно из моих практических правил при построении панелей пользовательского интерфейса - никогда не устанавливать непосредственно какое-либо местоположение или размер.

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

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

Наконец, я пытаюсь использовать DesignGridLayout для большинства моих форм и иногда возвращаюсь к GridBagLayout, если макет пользовательского интерфейса слишком сложен (но сложный макет пользовательского интерфейса также может быть признаком плохого дизайна пользовательского интерфейса) .

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

2 голосов
/ 22 марта 2011

Прежде всего взгляните на Mig Layout . Это настоящий полнофункциональный менеджер макетов, и в настоящее время он является лучшим из доступных. Если по какой-то причине вы не можете использовать внешние зависимости, тогда вам стоит взглянуть на GridBagLayout. GridBagLayout будет достаточно мощным, чтобы делать все, что вам нужно, но его не так просто использовать, как Mig Layout.

В 99% приложений, которые вы создадите, у вас будет один JFrame, и вы просто переключите JPanels для отображения разных экранов.

0 голосов
/ 31 августа 2011

Да, добро пожаловать.По сравнению с HTML / Javascript / CSS вы не можете получить ничего, как изощренность и изысканность для эквивалентного уровня времени, потраченного на обучение.

(я не нашел все файлы для вас здесь - Google и начать поиск).

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

Java swing, по моему мнению, отчаянно плачет о библиотеке плагинов типа JQuery с открытым исходным кодом, которая будет анимироватьваши JComponents и визуализировать их так, как вам нравится.Это определенный гражданин второго класса на рабочем столе, и особенно теперь, когда изощренность отрисовки браузера CSS / HTML улучшилась за последние несколько лет.

Стиль «нимб» - это усовершенствование, безусловно, в правильном направлении.

Вы также можете перейти на JavaFx.Удачи.Видимо, это довольно приятно.У меня еще не было времени или терпения.

Если вам разрешено использовать стороннюю библиотеку: попробуйте JAXX в качестве опции.Идея состояла в том, чтобы создать реализацию типа css, в которой элементы стиля разделяются на файл, который можно быстро настроить и протестировать.

Прочтите здесь для хорошего ознакомления: today.java.net/pub/a/today/2006/03/30/introduction-jaxx.html

JavaCSS находится в проекте JAXX.JAXX - это реализация в стиле XML-формата интерфейса Swing Gui.Вы пишете XML-документ и документ в стиле CSS и можете связать входы и выходы GUI с вашим механизмом реализации Java.Документ в стиле CSS позволяет быстро создавать сложные графические интерфейсыИспользуя jaxx jar engine, xml-код преобразуется в java-код, который выполняется так же быстро, как если бы он был развернут в файле класса .java.

Проект был продолжен французской группой программистов и теперь должен бытьможно найти здесь: http://www.nuiton.org/projects/jaxx/files

Демонстрация, по крайней мере, хороша, и большинство вещей, кажется, работают.

Последний выпуск - JAXX 2.4.2.Последнее обновление было в мае или июне 2011 года. Хотя на французском языке, документация все еще понятна на английском языке.Просто переведите.

Исходные файлы jaxx, написанные Этаниколом, в последний раз обновлялись 17-07-2009

http://sourceforge.net/projects/jaxx/

Обратите внимание: www.jaxxframework.org/wiki/ Main_Page - неработающая ссылка, сайт закрыт.вместо этого было сделано зеркало, которое можно найти по адресу: buix.labs.libre-entreprise.org/original-jaxx/www.jaxxframework.org/wiki/Main_Page.html

Эта документация необходима для пониманиязначение и цель jaxx и его использования.


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

Или платить, чтобы ваши компоненты графического интерфейса обрабатывались профессиональной сторонней библиотекой?(Хм, очевидный ответ, никто из тех, кто потратил время и силы на то, чтобы научиться создавать симпатичный графический интерфейс, просто передаст это).

Итак, потратьте три года на изучение, а затем попросите у других moola?

Еще одна идея - я очень изучаю, но похоже, что это может быть кошмаром для реализации, несмотря на то, что все говорят, что это таклегко, получите встроенный веб-браузер с открытым исходным кодом html / csss рендеринга и создайте свой графический интерфейс для этого, используя CSS / JQuery / HTML.

Но похоже, что вы должны сначала скомпилировать веб-браузер (mozilla) из исходного кода, а затем обернуть его в другую программу (например, JRex), а затем поместить все это на сервер мини-клиента, такой как Jetty,просто иметь реализацию интерфейса, которая вам нравится наполовину.

И это только в том случае, если браузер действительно соответствует стандарту CSS2 и HTML4. Забудьте о HTML5. Это на будущее.

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

...