Java Look and Feel (L & F)

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

Ответ 1

Для LaFs существует множество возможностей:


Ресурсы:

Связанные темы:

Ответ 2

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

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

Binaries: https://github.com/mgarin/weblaf/releases
Источник: https://github.com/mgarin/weblaf
Лицензии: GPLv3 и Коммерческий

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

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

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

Ответ 3

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

Ответ 4

Здесь также большой ресурс со списком свободного, скиннируемого, коммерческого и прекращенного вида и чувств: http://www.javootoo.com/

Ответ 5

Вы также можете использовать JTattoo (http://www.jtattoo.net/), в нем есть несколько интересных тем, которые можно использовать.

Просто загрузите банку и импортируйте ее в свой путь к классам или добавьте ее как зависимость от 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

Привет

Ответ 6

+1 для Synthetica, я использовал его в сочетании с Jide в течение последних нескольких лет и были очень довольны пользовательским интерфейсом: (скриншоты нашего пользовательского интерфейса, чтобы получить некоторые идеи о том, как это работает на практике, если вы используете оба вместе.)

Ответ 7

Вот код, который создает диалог, который позволяет пользователю вашего приложения изменять Look And Feel на основе пользовательских систем. В качестве альтернативы, если вы можете сохранить желаемый 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);
                    }
                }
            }
        }
    }