Как изменить цвет JProgressBar

1 Я пытаюсь изменить цвет индикатора выполнения, но он остается оранжевым, вот код:

test(){  
        UIManager.put("ProgressBar.background", Color.BLACK);
        UIManager.put("ProgressBar.foreground", Color.RED);
        UIManager.put("ProgressBar.selectionBackground", Color.YELLOW);
        UIManager.put("ProgressBar.selectionForeground", Color.BLUE);
        
          
         bar = new JProgressBar();
         bar.setBounds(20, 30,400 , 200);
         bar.setString("Welcome...");
         bar.setStringPainted(true);
         this.add(bar);

        

Я пробовал .setbackground, это тоже не сработало

Что ТАКОЕ и как выглядит?

MadProgrammer 05.04.2022 06:49

Место, которое вы называете UIManager.put, имеет значение, попробуйте вызвать его в разделе верхнего уровня вашего кода.

Mustafa Poya 05.04.2022 06:58

Как намекнул MadProgrammer, я обнаружил, что это почти всегда вызвано наличием внешнего вида, который переопределяет то, что вы делаете (Ваша IDE может автоматически сгенерировать код внешнего вида для одного без вашего ведома). В соответствии с JavaDoc для помещать «Сохраняет объект в настройках разработчика по умолчанию. Это метод покрытия для getDefaults().put(key, value). Это влияет только на настройки по умолчанию для разработчиков, а не на систему или настройки внешнего вида по умолчанию.», акцент мой.

sorifiend 05.04.2022 07:10

Если у вас есть внешний вид, используйте следующее, чтобы изменить внешний вид UIManager.getLookAndFeelDefaults().put(...);, а не просто изменить системные настройки по умолчанию UIManager.put(...);

sorifiend 05.04.2022 07:15

@sorifiend Я обнаружил, что большинство «системных» стилей (например, Windows и MacOS) просто полностью игнорируют клавиши ?

MadProgrammer 05.04.2022 07:24
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
5
31
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

проблема с вашим кодом может быть связана с местом, которое вы назвали UIManager. если вы вызываете его перед инициализацией объекта, он работает правильно:

UIManager.put("ProgressBar.background", Color.GREEN);
UIManager.put("ProgressBar.foreground", Color.BLUE);
UIManager.put("ProgressBar.selectionBackground", Color.RED);
UIManager.put("ProgressBar.selectionForeground", Color.GREEN);

JProgressBar progress = new JProgressBar();

результат:

и если вы вызовете UIManager после инициализации, результат будет другим:

JProgressBar progress = new JProgressBar();

UIManager.put("ProgressBar.background", Color.GREEN);
UIManager.put("ProgressBar.foreground", Color.BLUE);
UIManager.put("ProgressBar.selectionBackground", Color.RED);
UIManager.put("ProgressBar.selectionForeground", Color.GREEN);

результат:
]2

Вы также должны остерегаться того, что 1. Большинство взглядов и ощущений будут игнорировать их и 2. Nimbus использует разные клавиши.

MadProgrammer 05.04.2022 07:21

Другие вопросы по теме