Hallo Leute,
Ich wollte mich endlich mal damit beschäftigen, solche hübschen Ladebalken zu basteln.
Bin dabei auf die Klasse ProgressMonitor gestossen.
Hier auch schon meine Methode, um das ganze zu testen:
Das funktioniert auch, wenn ich es direkt in der main-Methode aufrufe.
Doch, wenn ich jetzt über einen Button oder über SwingUtilities.invokeLater() die Methode aufrufe ist das Pop-Up ein weißes Fenster (?)
oder
Woran könnte das liegen?
Gruß, Thomas
Ich wollte mich endlich mal damit beschäftigen, solche hübschen Ladebalken zu basteln.
Bin dabei auf die Klasse ProgressMonitor gestossen.
Hier auch schon meine Methode, um das ganze zu testen:
Java:
public static void act(){
// UIManager.put("ProgressMonitor.progressText", "Newton-Fraktal erzeugen...");
// UIManager.put("OptionPane.cancelButtonText", "Abbrechen");
ProgressMonitor pbar = new ProgressMonitor(null, "Monitoring Progress", "Initializing . . .", 0, 100);
Point size = new Point(100, 100);
double procent = 0;
int progress = 0;
for (int x = 0; x < size.x; x++){
for (int y = 0; y < size.y; y++){
// Berechnungszeit simulieren
try {
Thread.sleep(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
// progress berechnen
procent = 100 * x / size.x;
progress = (int)Math.round(procent);
// progress soll abgerundet werden
if (progress > procent){
progress -= 1;
}
if (x == size.x - 1 && y == size.y - 1){
progress = 100;
}
// progress anzeigen (immer 3-Stellige Koordinaten)
pbar.setProgress(progress);
String sx = "" + x;
String sy = "" + y;
if (x < 10){
sx = "00" + x;
}
else if (x < 100){
sx = "0" + x;
}
if (y < 10){
sy = "00" + y;
}
else if (y < 100){
sy = "0" + y;
}
pbar.setNote("[" + sx + ";" + sy + "] -> " + progress);
}
}
}
Das funktioniert auch, wenn ich es direkt in der main-Methode aufrufe.
Doch, wenn ich jetzt über einen Button oder über SwingUtilities.invokeLater() die Methode aufrufe ist das Pop-Up ein weißes Fenster (?)
Java:
SwingUtilities.invokeLater(new Runnable() {
@Override
public void run() {
act();
}
});
Java:
button.addActionListener(new ActionListener(){
@Override
public void actionPerformed(ActionEvent e){
act();
}
});
Woran könnte das liegen?
Gruß, Thomas
Zuletzt bearbeitet: