Używam komponentu JProgressBar
wraz z ustawieniami domyślnymi interfejsu Nimbus. Problem polega na tym, że gdy chcę ręcznie zmienić kolory paska każdego paska postępu, używam funkcji BasicProgressBarUI
, ustawiając funkcję JProgressBar.setUI()
. To sprawia więcej problemów, ponieważ chciałbym po prostu zmienić kolor paska i wydaje mi się, że tracę domyślny wygląd paska jprogress (granica, kolor tła znika).JProgressBar Dynamiczne zmienianie koloru prętów
Dzięki temu mogę ustawić UIDefaults
programu Nimbus ProgressBar podczas inicjowania kodu. To działa.
Ale chcę dynamicznie zmieniać kolory paska każdego paska postępu.
Czy istnieje inny sposób zmiany baru koloru JProgressBar
?
public class ProgressGenerator extends JFrame {
protected int minValue = 0;
protected int maxValue = 100;
protected int counter = 0;
protected JProgressBar progressBar;
public ProgressGenerator() {
super("JProgressBar Demo");
setSize(300, 100);
try {
UIManager.setLookAndFeel("com.sun.java.swing.plaf.nimbus.NimbusLookAndFeel");
} catch (ClassNotFoundException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (InstantiationException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IllegalAccessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (UnsupportedLookAndFeelException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
progressBar = new JProgressBar();
progressBar.setMinimum(minValue);
progressBar.setMaximum(maxValue);
progressBar.setStringPainted(true);
progressBar.setForeground(Color.GREEN);
JButton start = new JButton("Start");
start.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
Thread runner = new Thread() {
public void run() {
counter = minValue;
while (counter <= maxValue) {
Runnable runme = new Runnable() {
public void run() {
progressBar.setValue(counter);
}
};
SwingUtilities.invokeLater(runme);
counter++;
try {
Thread.sleep(100);
} catch (Exception ex) {
}
}
}
};
runner.start();
}
});
getContentPane().add(progressBar, BorderLayout.CENTER);
getContentPane().add(start, BorderLayout.WEST);
WindowListener wndCloser = new WindowAdapter() {
public void windowClosing(WindowEvent e) {
System.exit(0);
}
};
addWindowListener(wndCloser);
setVisible(true);
}
public static void main(String[] args) {
new ProgressGenerator();
}
}
dla lepszej pomocy prędzej POST [SSCCE] (http://sscce.org/), krótki, runnable, compilable, w przeciwnym razie trzeba szukać, Google może powróci że – mKorbel
See [to] (http://stackoverflow.com/questions/7174420/change-colors-for-jprogressbar-with-nimbus) podobne pytanie/odpowiedź, które pokazuje, jak używać 'UIDefaults' i' putClientProperty' aby zmienić pojedynczy kolor 'JProgressBar' –
Obecny problem dotyczy zmiany koloru paska za pomocą setForeground (Color.GREEN); zmienia kolor SelectionBackground. I wydaje się, że setBackgroundColor (Color.RED); polecenie nic nie robi. – mbasol