Задать вопрос
Ответы пользователя по тегу Java
  • Как поменять тему оформления в произвольном Java-приложении?

    KhanTengri
    @KhanTengri
    Вообще, я не вижу серьезной проблемы в этом…

    Сперва скажу, что получать список существующих тем смысла нет.
    Для каждой конкретной версии jdk они всегда и везде одинаковы.
    Например, для jdk6, как выше и написали уже, они будут такими:

    Metal
    javax.swing.plaf.metal.MetalLookAndFeel
    Nimbus
    com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel
    CDE/Motif
    com.sun.java.swing.plaf.motif.MotifLookAndFeel
    

    Исключением является только Mac, где добавляется тема:

    Mac OS X
    com.apple.laf.AquaLookAndFeel
    

    Все остальные темы, вроде Alloy, Stubstance, Synthetica etc. вы добавляете сами, руками.

    Конкретно по вашему вопросу…
    Я не думаю, что вот эти вот цветовые изменения, которые вы хотие делать, можно делать параметрами при запуске.
    Все изменения цветов рамочек, фонов и проч. — это все кастомизация интерфейса.
    Для примера, вы можете глянуть приложение Metalworks, которое поставляется со всеми jdk от компании Oracle.
    Вы можете найти его здесь: <JAVA_HOME>/demo/jfc/Metalworks/Metalworks.jar
    Загляните в код(в папке рядом) и увидете, что все цветовые схемы там прописаны мануально (вызовами методов или чтением собственных конфигов)

    Самый лучший вариант для вас, как я считаю — это написать собственный класс, который расширяет одну из тем, например, javax.swing.plaf.metal.MetalLookAndFeel и прописать там какого цвета рамочка вам нужна. Как вариант, вы можете этот класс написать таким образом, чтобы он просто считывал рядом лежащий properties файл. Это даст вам возможность легко менять цвета, без перекомпиляции класса. Затем, скомпилировав этот класс, просто положите его туда, где jdk сможет его найти (что бы не править постоянно CLASSPATH) и запускайте ваш NetBeans с названием этого вашего класса LaF…
    Это даже проще, потому что вам не придется постоянно помнить названия sun'овских пакетов…
    Ваши com.example.laf.CustomTheme
    против sun'овских com.sun.java.swing.plaf.motif.MotifLookAndFeel, например…
    Ответ написан
    Комментировать