Изменения внешнего вида Java GUI

Я новичок в программировании, но я готов написать Java-программу. Как я и планирую, я пытаюсь найти для него правильный графический интерфейс. Я нашел эту страницу с параметрами GUI. У меня есть два вопроса:

  • Будут ли они просто подключаться к строителю GUI Java?
  • Насколько легко (или сложно) изменить внешний вид GUI после создания программы?

Ответ 1

Изменение внешнего вида программы так же просто, как:

UIManager.setLookAndFeel("fully qualified name of look and feel");

до создания любого GUI-кода. Таким образом, вы можете легко создать весь свой графический интерфейс с помощью своего графического редактора, а затем просто вызвать его в начале вашей программы.

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

В качестве предложения два очень привлекательных (и выглядящих достаточно профессионально) взгляда и чувств, на мой взгляд, являются "Вещество", а также "Нимбус", который будет поставляться с более поздними версиями JRE в качестве стандартного вида N-чувства (по крайней мере, план) и которые можно загрузить отдельно от java.net.

Итак, если вы выберете Nimbus, код будет выглядеть следующим образом:

UIManager.setLookAndFeel("javax.swing.plaf.nimbus.NimbusLookAndFeel");

И один пример вещества (вещество содержит много скинов и тем, если вы хотите узнать больше о своей документации на своем сайте):

UIManager.setLookAndFeel(new org.jvnet.substance.skin.SubstanceBusinessBlackSteelLookAndFeel());

Также обратите внимание, что вы можете использовать скин кросс-платформы (Metal) следующим образом:

UIManager.setLookAndFeel(UIManager.getCrossPlatformLookAndFeelClassName());

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

UIManager.setLookAndFeel(UIManager.getSystemLookAndFeelClassName());

Ответ 2

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

Если вы используете Swing, вам может понадобиться изучить Nimbus внешний вид... он включен в Java 6u10 и новее. Nimbus построен на Synth framework, включенный в Java 5 и новее.

Конечно, если конечный пользователь использует более низкую версию, он будет генерировать исключение UnsupportedLookAndFeelException и по умолчанию независимо от того, по умолчанию имеет значение JVM (обычно это тема "Металл/океан" (кросс-платформенная)).

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

// "lnfName" is the look and feel name.
// "frame" is the window JFrame.
// A try/catch block is omitted here.
UIManager.setLookAndFeel(lnfName);
SwingUtilities.updateComponentTreeUI(frame);
frame.pack();

Ответ 3

Игнорируя pro/con выбор внешнего вида (LAF), я добавлю часть своего опыта, который их использует...

Если вы используете стороннюю/расклассифицированную библиотеку компонентов (JIDE, SwingLabs/SwingX и т.д.), у вас будут проблемы, поскольку классы пользовательского интерфейса не всегда будут существовать или обновляться со всеми LAF. JIDE поддерживает несколько внешних LAF (Alloy и Synthetica). Некоторые LAF также предлагают поддержку виджетов; Вещество поддерживает некоторые из JIDE и SwingX. Конечным результатом является приложение, которое частично скроено. Не красиво. Убедитесь, что ваш LAF поддерживает все ваши компоненты. Если вы чистый Swing/AWT, никаких проблем.

В свете этого мы используем Alloy для поддержки JIDE, учитывая переход на Synthetica. Мы хотели бы использовать вещество, но у него нет поддержки JIDE.

Ответ 4

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

Стандартные библиотеки GUI по своей сути очень сложны, и хотя они поддерживают некоторую настройку внешнего вида, настройки часто незначительны или ограничены.

Я бы рекомендовал придерживаться Swing или SWT и посмотреть, что вы можете сделать с их механизмом внешнего вида, но не ожидайте чудес.