Страницы

Поиск по вопросам

воскресенье, 29 декабря 2019 г.

Изменение цвета JProgressBar

#java #swing


Нужно изменить цвет полоски прогресса. Метод setBackground не помогает.

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


Это тоже не оказывает никакого эффекта.
Как можно изменить цвет полосы прогресса?
Предполагаю, что нужно изменить метод, в котором происходит отрисовка, но найти этот
метод не могу.
    


Ответы

Ответ 1



Метод setBackground изменяет цвет фона. Для того чтобы изменить цвет самой полосы прогресса нужно использовать метод setForeground. Например: jProgressBar1.setForeground(Color.YELLOW);

Ответ 2



Вариант с UIManager, описанный в англоязычном Stack Overflow, отлично работает. Скорее всего вы что-то не так делаете. Вот пример: import java.awt.BorderLayout; import java.awt.Color; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent; import java.awt.event.WindowListener; import javax.swing.JFrame; import javax.swing.JProgressBar; import javax.swing.SwingUtilities; import javax.swing.UIManager; public class Main extends JFrame { private int counter = 0; private JProgressBar progressBar; public Main() { super("JProgressBar"); setSize(300, 50); UIManager.put("ProgressBar.background", Color.ORANGE); UIManager.put("ProgressBar.foreground", Color.BLUE); UIManager.put("ProgressBar.selectionBackground", Color.RED); UIManager.put("ProgressBar.selectionForeground", Color.GREEN); progressBar = new JProgressBar(); getContentPane().add(progressBar, BorderLayout.CENTER); WindowListener wndCloser = new WindowAdapter() { public void windowClosing(WindowEvent e) { System.exit(0); } }; addWindowListener(wndCloser); setVisible(true); while (counter <= 100) { Runnable runme = () -> progressBar.setValue(counter); SwingUtilities.invokeLater(runme); counter++; try { Thread.sleep(100); } catch (Exception ignored) {} } } public static void main(String[] args) { new Main(); } } Модифицировал пример JProgressBar по ссылке.

Комментариев нет:

Отправить комментарий