G
Gilez2k
Gast
Hallo!
Ich habe bereits viel gegoogelt, aber verstehe die Problembehandlung mit der JProgressBar noch immer nicht so recht...
In meinem Programm möchte ich einen solchen Fortschrittsbalken benutzen.
Zum Beispiel beim Laden vieler Dateien. Zunächst habe ich eine fensterErzeugen() Methode, in der eine JProgressBar und ein zweites JFrame, in dem die progressbar angezeigt werden soll, initialisiert werden:
[Java]
private void fensterErzeugen()
{
progressWindow = new JFrame();
// An dieser Stelle wird das Hauptfenster erzeugt, Methoden ausgelassen
// JFrame für ProgressBar intitialisieren:
JFrame progressWindow = new JFrame(" Programmfortschritt ");
JPanel cP = (JPanel) progressWindow.getContentPane();
prozentBar = new JProgressBar(1,100);
cP.add(prozentBar);
progressWindow.setSize(250,70);
progressWindow.setLocation((int) fenster.getLocation().getX()+fenster.getWidth()/2-progressWindow.getWidth()/2
,(int) fenster.getLocation().getY()+fenster.getHeight()/2-progressWindow.getHeight()/2);
progressWindow.setVisible(false);
prozentBar.setStringPainted(true);
}[/Java]
Dann habe ich noch eine Methode setzeProzent(int wert):
[Java]
private void setzeProzent(double wert){
prozentBar.setValue((int) wert);
prozentBar.paint(prozentBar.getGraphics());
}[/Java]
Nun versuche ich beim Öffnen der Dateien das progressWindow mit der JProgressBar anzeigen zu lassen und je nach Fortschritt den Prozentwert zu aktualisieren:
[Java]
private void dateiOeffnen()
{
// Enable multiple selections
dateiauswahldialog.setMultiSelectionEnabled(true);
// Show the dialog; wait until dialog is closed
int ergebnis = dateiauswahldialog.showOpenDialog(fenster);
if (ergebnis != JFileChooser.APPROVE_OPTION){
return;
}
// Retrieve the selected files. This method returns empty
// if multiple-selection mode is not enabled.
File[] selektierteDateien = dateiauswahldialog.getSelectedFiles();
before = new Farbbild[selektierteDateien.length];
if (selektierteDateien.length>10){
progressWindow.setVisible(true);
prozentBar.setVisible(true);
}
for (int i = 0; i < selektierteDateien.length; i ++){
before = BilddateiManager.ladeBild(selektierteDateien);
setzeProzent(i/selektierteDateien.length);
}[/Java]
Wenn ich nun das Programm starte und viele Dateien öffne, dann wird zwar das progressWindow sichtbar, allerdings wird die progressBar nicht gezeichnet. Erst wenn der Ladevorgang beendet ist, wird mir ein fertiger Prozess angezeigt. Woran liegt das/ Wie behebe ich das?
Kann mir jemand erklären?
vielen Dank im Vorraus!
Ich habe bereits viel gegoogelt, aber verstehe die Problembehandlung mit der JProgressBar noch immer nicht so recht...
In meinem Programm möchte ich einen solchen Fortschrittsbalken benutzen.
Zum Beispiel beim Laden vieler Dateien. Zunächst habe ich eine fensterErzeugen() Methode, in der eine JProgressBar und ein zweites JFrame, in dem die progressbar angezeigt werden soll, initialisiert werden:
[Java]
private void fensterErzeugen()
{
progressWindow = new JFrame();
// An dieser Stelle wird das Hauptfenster erzeugt, Methoden ausgelassen
// JFrame für ProgressBar intitialisieren:
JFrame progressWindow = new JFrame(" Programmfortschritt ");
JPanel cP = (JPanel) progressWindow.getContentPane();
prozentBar = new JProgressBar(1,100);
cP.add(prozentBar);
progressWindow.setSize(250,70);
progressWindow.setLocation((int) fenster.getLocation().getX()+fenster.getWidth()/2-progressWindow.getWidth()/2
,(int) fenster.getLocation().getY()+fenster.getHeight()/2-progressWindow.getHeight()/2);
progressWindow.setVisible(false);
prozentBar.setStringPainted(true);
}[/Java]
Dann habe ich noch eine Methode setzeProzent(int wert):
[Java]
private void setzeProzent(double wert){
prozentBar.setValue((int) wert);
prozentBar.paint(prozentBar.getGraphics());
}[/Java]
Nun versuche ich beim Öffnen der Dateien das progressWindow mit der JProgressBar anzeigen zu lassen und je nach Fortschritt den Prozentwert zu aktualisieren:
[Java]
private void dateiOeffnen()
{
// Enable multiple selections
dateiauswahldialog.setMultiSelectionEnabled(true);
// Show the dialog; wait until dialog is closed
int ergebnis = dateiauswahldialog.showOpenDialog(fenster);
if (ergebnis != JFileChooser.APPROVE_OPTION){
return;
}
// Retrieve the selected files. This method returns empty
// if multiple-selection mode is not enabled.
File[] selektierteDateien = dateiauswahldialog.getSelectedFiles();
before = new Farbbild[selektierteDateien.length];
if (selektierteDateien.length>10){
progressWindow.setVisible(true);
prozentBar.setVisible(true);
}
for (int i = 0; i < selektierteDateien.length; i ++){
before = BilddateiManager.ladeBild(selektierteDateien);
setzeProzent(i/selektierteDateien.length);
}[/Java]
Wenn ich nun das Programm starte und viele Dateien öffne, dann wird zwar das progressWindow sichtbar, allerdings wird die progressBar nicht gezeichnet. Erst wenn der Ladevorgang beendet ist, wird mir ein fertiger Prozess angezeigt. Woran liegt das/ Wie behebe ich das?
Kann mir jemand erklären?
vielen Dank im Vorraus!