Изменения внешнего вида 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 и посмотреть, что вы можете сделать с их механизмом внешнего вида, но не ожидайте чудес.