2011-03-22 3 views
1

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

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

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

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

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

Play Game - Приходит к новой панели для игры. Лобби - Отвечает вам в чате, как интерфейс и т. Д.

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

ответ

2

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

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

+0

MigLayout выглядит довольно сделано несколько макетов с ним уже. – Bombcode

3

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

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

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

2

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

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

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

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

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

0

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

(Я не получил для вас все файлы для чего-либо здесь - google и начать поиск).

Свинг, по моему опыту, определенно чувствует, что я прочитал 10 миллионов документов, сыграл с некоторыми демонстрационными материалами и провел три или четыре месяца в ночное время в течение 2-3 часов, и у вас есть некоторое представление о том, как некоторые из работ api и то понятия не имею, почему некоторые этого не делают. Здорово. Вы хотите, чтобы что-то работало, а затем реализовано, и переходите к f * ck к остальной части вашего gui.

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

Стиль и стиль стиля нимб - это определенно улучшение в правильном направлении.

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

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

Читайте здесь хорошее введение: today.java.net/pub/a/today/2006/03/30/introducing-jaxx.html

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

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

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

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

Оригинальные Ethan Nicholas файлы 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 и его использования.


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

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

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

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

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

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

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

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