Java Look and Feel (L & F) [закрыто]

163

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

Раджеш
источник
1
Нимрод Дж. Гонсалес, созданный LGPL в стиле Nimrod: personales.ya.com/nimrod/faq-en.html . Немного глючит (невозможно установить цвет фона для JButton - решено с помощью переопределения paintComponent () с использованием полупрозрачной техники BufferedImage)
ecle

Ответы:

199

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


Ресурсы :

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

Колин Хеберт
источник
2
Быстрый способ увидеть, как ваше приложение выглядит под Nimbus, запустите приложение с аргументом `-Dswing.defaultlaf = javax.swing.plaf.nimbus.NimbusLookAndFeel`, например, java -Dswing.defaultlaf=javax.swing.plaf.nimbus.NimbusLookAndFeel -jar MyApp.jar
nos
3
Чтобы использовать металлический внешний вид в существующих приложениях, добавьте -Dswing.defaultlaf=javax.swing.plaf.metal.MetalLookAndFeelпараметр в вызов Java.
Мачей
Какие из них хороши на дисплеях «Retina»? (не только на OS X, но и на Win 8 теперь есть ноутбуки с экранами с высоким DPI)
Display Name
61

Вы можете попробовать 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.

Микле Гарин
источник
Обратите внимание, что прежде чем прыгать, не глядя на лицензию, лицензия gpl. Это может или не может быть проблемой для некоторых.
Тинус Тейт,
Я думаю, что потратить несколько сотен евро на коммерческую лицензию гораздо лучше, чем отдать эти деньги своему юристу за его совет, который, вероятно, будет означать «купите коммерческую лицензию, если вы используете продукт». Кроме того, на их сайте говорится, что вы получаете приоритетную техническую поддержку при покупке коммерческой лицензии.
Джефф Холт
4

Вы также можете использовать 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

С уважением

diegeelvis_SA
источник
1

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

   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);
                    }
                }
            }
        }
    }
TheArchon
источник