Java Look and Feel (L&F)
Я разрабатываю настольное приложение на Java Swing для личного пользования. Мне нужно красивое приложение Look and Feel для моего приложения. Как я могу сделать это с помощью Java или стороннего API?
7 ответов
Есть много возможностей для LaFs:
- Натив для вашей системы
- Нимб лаф
- Web LaF
- Существенный проект (разветвленный в Незначительный проект)
- Салфетка LaF
- Synthetica
- Quaqua (выглядит как аква от MacOS X)
- Seaglass
- JGoodies
- Liquidlnf
- Сплав Смотреть и чувствовать
- PgsLookAndFeel
- JTatoo
- Jide выглядеть и чувствовать
- и т.п.
Ресурсы:
- Лучшие темы Java Swing Look and Feel | Топ 10 (многие изображения для предварительного просмотра на этой странице в настоящее время отсутствуют)
- oracle.com - изменение внешнего вида
- wikipedia.org - сменный внешний вид
- Java2s.com - Смотри и чувствуй
Похожие темы:
Вы можете попробовать L&F, который я разрабатываю - WebLaF
Он объединяет три части, необходимые для успешной разработки пользовательского интерфейса:
- Кроссплатформенный L&F для приложений Swing.
- Большой набор расширенных компонентов Swing
- Различные утилиты и менеджеры
Двоичные файлы: https://github.com/mgarin/weblaf/releases
Источник: https://github.com/mgarin/weblaf
Лицензии: GPLv3 и коммерческие
Несколько примеров, показывающих, как выглядят некоторые компоненты WebLaF:
Основная причина, по которой я начал с совершенно нового L&F, заключается в том, что большинству существующих L&F не хватает гибкости - в большинстве случаев вы не можете изменить их стиль (вы можете изменить только несколько цветов и включить / выключить некоторые элементы пользовательского интерфейса в лучшем случае) и / или есть только неудобные способы сделать это. Еще хуже, когда речь заходит о пользовательских / сторонних стилях компонентов - они не похожи на другие компоненты, стилизованные под какой-то конкретный L&F или даже совершенно иные, - что делает ваше приложение непрофессиональным и неприятным.
Моя цель состоит в том, чтобы предоставить полностью настраиваемый L&F с пакетом дополнительных широко известных и полезных компонентов (например, средства выбора даты, таблицы дерева, панели документов и много других), а также дополнительные полезные менеджеры и утилиты, которые уменьшат объем кода, необходимый для быстрой интеграции WebLaF в ваше приложение и помощи в создании потрясающих интерфейсов с использованием Swing.
Вот также отличный ресурс со списком бесплатных, скиновых, коммерческих и снятых с производства приложений: http://www.javootoo.com/
Вы также можете использовать JTattoo ( http://www.jtattoo.net/), у него есть пара интересных тем, которые можно использовать.
Просто скачайте jar и импортируйте его в ваш путь к классам, или добавьте его как зависимость maven:
<dependency>
<groupId>com.jtattoo</groupId>
<artifactId>JTattoo</artifactId>
<version>1.6.11</version>
</dependency>
Вот список некоторых интересных тем, которые у них есть:
- com.jtattoo.plaf.acryl.AcrylLookAndFeel
- com.jtattoo.plaf.aero.AeroLookAndFeel
- com.jtattoo.plaf.aluminium.AluminiumLookAndFeel
- com.jtattoo.plaf.bernstein.BernsteinLookAndFeel
- com.jtattoo.plaf.fast.FastLookAndFeel
- com.jtattoo.plaf.graphite.GraphiteLookAndFeel
- com.jtattoo.plaf.hifi.HiFiLookAndFeel
- com.jtattoo.plaf.luna.LunaLookAndFeel
- com.jtattoo.plaf.mcwin.McWinLookAndFeel
- com.jtattoo.plaf.mint.MintLookAndFeel
- com.jtattoo.plaf.noire.NoireLookAndFeel
- com.jtattoo.plaf.smart.SmartLookAndFeel
- com.jtattoo.plaf.texture.TextureLookAndFeel
- com.jtattoo.plaf.custom.flx.FLXLookAndFeel
С уважением
+1 за Synthetica, я использовал его вместе с Jide в течение последних нескольких лет и был очень доволен интерфейсом: ( Скриншоты нашего интерфейса, чтобы получить некоторые идеи о том, как это работает на практике, если вы используете оба вместе.)
Вот код, который создает диалог, который позволяет пользователю вашего приложения изменять внешний вид в зависимости от систем пользователя. В качестве альтернативы, если вы можете хранить требуемые функции Look And Feel в своем приложении, то они могут быть "переносимыми", что является желаемым результатом.
public void changeLookAndFeel() {
List<String> lookAndFeelsDisplay = new ArrayList<>();
List<String> lookAndFeelsRealNames = new ArrayList<>();
for (LookAndFeelInfo each : UIManager.getInstalledLookAndFeels()) {
lookAndFeelsDisplay.add(each.getName());
lookAndFeelsRealNames.add(each.getClassName());
}
String changeLook = (String) JOptionPane.showInputDialog(this, "Choose Look and Feel Here:", "Select Look and Feel", JOptionPane.QUESTION_MESSAGE, null, lookAndFeelsDisplay.toArray(), null);
if (changeLook != null) {
for (int i = 0; i < lookAndFeelsDisplay.size(); i++) {
if (changeLook.equals(lookAndFeelsDisplay.get(i))) {
try {
UIManager.setLookAndFeel(lookAndFeelsRealNames.get(i));
break;
}
catch (ClassNotFoundException | InstantiationException | IllegalAccessException | UnsupportedLookAndFeelException ex) {
err.println(ex);
ex.printStackTrace(System.err);
}
}
}
}
}