Nimbus Look And Feel JAVA - изменить глобальный размер компонентов

Я искал, возможно ли изменить глобальный размер всех компонентов в Nimbus Look and Feel.

Существует руководство по изменению размера компонента; но не для всех компонентов.

Я нашел что-то вроде этого: http://www.jasperpotts.com/blog/2007/12/nimbus-large-small-mini-components/

6 ноября 2008 г., 11:29. Извините, Мэтт, нет глобальной настройки размера, это снова то, что мы могли бы подумать о добавлении, поскольку это кажется разумным.

но этот пост был несколько лет назад и, возможно, что-то изменилось. Есть идеи?

Спасибо.


person Arek Woźniak    schedule 03.04.2012    source источник


Ответы (3)


Я не думаю, что есть какой-то особый способ добиться этого. Проект JXLayer имеет реализацию для преобразования всего пользовательского интерфейса в различные масштабы. Это можно применить к любому внешнему виду. . Вы можете проверить эту демонстрацию

person ring bearer    schedule 03.04.2012
comment
Хорошо, спасибо за ваш совет, но если нет простого способа добиться этого в nimbus (без использования сторонних библиотек, таких как JXLayer) - я должен искать другой laf. Любая (бесплатная для коммерческого использования) рекомендация? - person Arek Woźniak; 04.04.2012

Это можно сделать следующим образом:

  UIManager.setLookAndFeel(new NimbusLookAndFeel());

  final SynthStyleFactory styleFactory = SynthLookAndFeel.getStyleFactory();
  SynthLookAndFeel.setStyleFactory(new SynthStyleFactory() {
    @Override
    public SynthStyle getStyle(JComponent c, Region id) {
      c.putClientProperty("JComponent.sizeVariant", "large");
      return styleFactory.getStyle(c, id);
    }
  });
person Stijn    schedule 26.11.2015

Приведенный ниже ответ является расширением предыдущего ответа @Stijn с изменением подхода к инициализации, как рекомендовано в документе. Цитируя ссылки nimbuslaf и учебники по Swing — размер

Примечание к версии. Не устанавливайте внешний вид Nimbus явно, вызывая метод UIManager.setLookAndFeel, поскольку не все версии или реализации Java SE 6 поддерживают Nimbus. Кроме того, расположение пакета Nimbus изменилось между выпусками JDK 6 Update 10 и JDK 7. Повторение всех установленных реализаций внешнего вида — более надежный подход, потому что, если Nimbus недоступен, используется внешний вид по умолчанию.

try {
    for (LookAndFeelInfo info : UIManager.getInstalledLookAndFeels()) {
    if ("Nimbus".equals(info.getName())) {
        UIManager.setLookAndFeel(info.getClassName());
        try {
            Constructor c = Class.forName("MyStyleFactory").getConstructor(String.class);
            c.newInstance("small"); // regular, mini, small or large
        } catch (ExceptionInInitializerError eiie){
        //
        } catch (LinkageError le){
        //
        } catch (ClassNotFoundException cnfe){
        //
        }
        break;
    }
    }
} catch (Exception e) {
    // If Nimbus is not available, you can set the GUI to another look and feel.
}

Файл: MyStyleFactory.java

public class MyStyleFactory extends SynthStyleFactory {
    protected static String variant = "regular";

    final SynthStyleFactory styleFactory = SynthLookAndFeel.getStyleFactory();

    static {
        SynthLookAndFeel.setStyleFactory(new MyStyleFactory(variant));
    }

    public MyStyleFactory(String variant) {
        if (variant.equals("regular") || variant.equals("mini")
                || variant.equals("small") || variant.equals("large"))
            MyStyleFactory.variant = variant;
    }

    @Override
    public SynthStyle getStyle(JComponent c, Region id) {
        c.putClientProperty("JComponent.sizeVariant", variant);
        return styleFactory.getStyle(c, id);
    }
}
person Rajeev Sreedharan    schedule 25.03.2017