Внешний вид Java (L&F) [закрыто]


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

7 160

7 ответов:

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

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

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

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

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

вот список некоторых из интересных тем, которые у них есть

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

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

   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);
                    }
                }
            }
        }
    }