JProgressbar während actionListener updaten

Tonimakkaroni

Aktives Mitglied
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:

Neue Themen


Zurück
Oben