Hallo gibt es die möglichkeit ein JProgressbar während dessen der actionListener von einen Button läuft up zu daten `? Ich habe einen Button Namens "Senden", wenn dieser gedrückt wird sende ich eine Datei über meinen Outputstream. Jedoch wird mir das JProgressBar erst wenn die übertragung fertig ist mit 100% angezeigt.
Java:
btnSenden.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
final JProgressBar meinLadebalken = new JProgressBar(0, data.getFile());
meinLadebalken.setBounds(172, 108, 542, 17);
// Wert für den Ladebalken wird gesetzt
meinLadebalken.setValue(0);
meinLadebalken.setForeground(Color.GREEN);
// Der aktuelle Wert wird als Text in Prozent angezeigt
meinLadebalken.setStringPainted(true);
meinLadebalken.setValue(data.getLadebalken());
// JProgressBar wird Panel hinzugefügt
meinJFrame.getContentPane().add(meinLadebalken);
try {
fis = new FileInputStream(data.getAuswahl());
byte[] buffer = new byte[128];
int len = 0 ;
int blocknummer = 1;
int checksumme = 0;
int index = 0 ;
byte[]sector = new byte[SECSIZE];
int i=128;
OutputStream os = chosenPort.getOutputStream();
while ((len = fis.read(buffer)) > 0 ){
if (len<SECSIZE)
buffer[len]=CPMEOF;
os.write(SOH);
os.write(blocknummer);
os.write(~blocknummer);
checksumme = 0;
for (index = 0; index < SECSIZE; index++)
{
os.write(buffer[index]);
checksumme += (buffer[index]);
}
os.write( checksumme);
if (i<=meinLadebalken.getMaximum() ){
i= i+i;
}
data.setLadebalken(i);
meinLadebalken.setValue(data.getLadebalken());
os.flush();
blocknummer++;
}
os.write(EOT);
os.flush();
os.write(ACK);
os.flush();
fis.close();
os.close();
// meinJFrame.setVisible(false);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
});
Zuletzt bearbeitet von einem Moderator: