Hallöchen zusammen,
ich bin gerade dabei eine kleine GUI zu entwickeln. Hierbei nutze ich SwingWorker um ein Array in einer for-Schleife abzuarbeiten. Das Array ist ein File-Array. Während der for-Schleife wird jedes im Array enthaltene Bild skaliert. Nun möchte ich nach jedem einzelnen Bild gerne die Dauer des Vorgangs und der Name des skalierten Bildes in einem JTextArea ausgeben. Ich bin jedoch bis jetzt kläglich daran gescheitert.
Dieser Aufruf erfolgt in der GUI Klasse:
Der Schleifenaufruf in der SwingWorker Klasse
Nochmal zusammenfassend:
Ich benötige den Wert des aktuellen i in der GUI-Klasse, wie ist das zu realisieren?
Danke für Eure Hilfe.
ich bin gerade dabei eine kleine GUI zu entwickeln. Hierbei nutze ich SwingWorker um ein Array in einer for-Schleife abzuarbeiten. Das Array ist ein File-Array. Während der for-Schleife wird jedes im Array enthaltene Bild skaliert. Nun möchte ich nach jedem einzelnen Bild gerne die Dauer des Vorgangs und der Name des skalierten Bildes in einem JTextArea ausgeben. Ich bin jedoch bis jetzt kläglich daran gescheitert.
Dieser Aufruf erfolgt in der GUI Klasse:
Code:
//Erzeugung eines neuen SwingWorker Objektes
final ScaleImages si = new ScaleImages(imagefile, SCALING,
Integer.parseInt(scale_width.getText()), Integer.parseInt(scale_length.getText()), outputDir );
si.execute();
//Versuch eine Property abzufragen
si.addPropertyChangeListener(
new PropertyChangeListener() {
public void propertyChange(PropertyChangeEvent evt) {
if ("schleifenlauf".equals(evt.getPropertyName())) {
log.append("Scaled: " +si.getImagefile()[si.getSchleifenlauf()].getName()+" in "+si.getDauer()+" ms."+"\n");
showImageLabel.setIcon(new ImageIcon(si.getScaledImage()));
}
}
});
Der Schleifenaufruf in der SwingWorker Klasse
Code:
protected int doInBackground() throws Exception {
for (int i=0;i<getImagefile().length;++i){
long startzeit = System.currentTimeMillis();
setImage(javax.imageio.ImageIO.read(getImagefile()[i]));
setScaledImage(scaleImage(getImage(), getScaling(), getWidth(), getLength()));
String filename = getImagefile()[i].getName();
filename = filename.substring(0, filename.indexOf(".jpg"));
String outputdir = getOutputDir().toString()+File.separatorChar+filename+".bmp";
BufferedImage buffimage = createBufferedImage(getScaledImage());
ImageIO.write(buffimage, "bmp", new File( outputdir ) );
long endzeit = System.currentTimeMillis();
setDauer(endzeit-startzeit);
//this.setProgress(i) funktioniert, allerding kann hierbei i max. 100 sein, was zu klein ist
this.setSchleifenlauf(i);
return schleifenlauf;
}
}
Nochmal zusammenfassend:
Ich benötige den Wert des aktuellen i in der GUI-Klasse, wie ist das zu realisieren?
Danke für Eure Hilfe.