Java Look and Feel (L&F)

Я разрабатываю настольное приложение на Java Swing для личного пользования. Мне нужно красивое приложение Look and Feel для моего приложения. Как я могу сделать это с помощью Java или стороннего API?

7 ответов

Решение

Есть много возможностей для LaFs:


Ресурсы:

Похожие темы:

Вы можете попробовать L&F, который я разрабатываю - WebLaF
Он объединяет три части, необходимые для успешной разработки пользовательского интерфейса:

  • Кроссплатформенный L&F для приложений Swing.
  • Большой набор расширенных компонентов Swing
  • Различные утилиты и менеджеры

Двоичные файлы: https://github.com/mgarin/weblaf/releases
Источник: https://github.com/mgarin/weblaf
Лицензии: GPLv3 и коммерческие

Несколько примеров, показывающих, как выглядят некоторые компоненты WebLaF:Некоторые из компонентов WebLaF

Основная причина, по которой я начал с совершенно нового L&F, заключается в том, что большинству существующих L&F не хватает гибкости - в большинстве случаев вы не можете изменить их стиль (вы можете изменить только несколько цветов и включить / выключить некоторые элементы пользовательского интерфейса в лучшем случае) и / или есть только неудобные способы сделать это. Еще хуже, когда речь заходит о пользовательских / сторонних стилях компонентов - они не похожи на другие компоненты, стилизованные под какой-то конкретный L&F или даже совершенно иные, - что делает ваше приложение непрофессиональным и неприятным.

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

Вы можете найти много тем Synthetica здесь.

Вот также отличный ресурс со списком бесплатных, скиновых, коммерческих и снятых с производства приложений: 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);
                    }
                }
            }
        }
    }
Другие вопросы по тегам