G
Gast
Gast
HI!!
Ich würde euch kurz mal um Hilfe bitten:
Ich habe Einen Server / Client geschreiben mit dessen Hilfe man files versenden kann. Zustäzlich wollte ich eine JProgressBar einfügen (= im Hauptfenster), was auch funktioniert:
Im weiteren Programm Teil rufe ich den Cleint auf der die Daten an den server schickt ( dabei übergebe ich die JProgressbar mit)
Im Client verwende ich einen Thread mit dessen hilfe ich die verschieckte datenmenge berechne
und hier möchte ich dei Progressbar aktualisieren
Das Problem ist er führt den Thread korrekt aus jedoch wird die JProgressBar im Hauptprogramm erst nach beenden der Datenübertragung aktualisiert.
Wieso? wenn ich sie hier repainte? Wie kann man das Problem lösen thx für eure hilfe
Ich würde euch kurz mal um Hilfe bitten:
Ich habe Einen Server / Client geschreiben mit dessen Hilfe man files versenden kann. Zustäzlich wollte ich eine JProgressBar einfügen (= im Hauptfenster), was auch funktioniert:
Code:
private JProgressBar m_prBar;
// ... funktionen uws
// Einbau der JProgressBar ins JFrame
m_prBar = new JProgressBar(0,100);
m_prBar.setStringPainted(true);
jpanel2.add(m_prBar);
// Fenster wir zusamengebaut.
Im weiteren Programm Teil rufe ich den Cleint auf der die Daten an den server schickt ( dabei übergebe ich die JProgressbar mit)
Code:
// m_ip ... = die Ziel ip
// FTO.getfreadpfad() = quelladresse der datei
// m_prBar = JProgress Bar
RClient client= new RClient(m_ip, FTO.getfreadpfad(), m_port.getText(), m_prBar);
client.runClient();
Im Client verwende ich einen Thread mit dessen hilfe ich die verschieckte datenmenge berechne
und hier möchte ich dei Progressbar aktualisieren
Code:
// Thread kreieren
new Thread()
{
public void run()
{ long lcurrent= 0;
int i = 0;
while(calc_bar)
{ File f = new File(m_pfad);
long lmax = f.length();
// Berechnung und den Procentualen wert in JProgressBar einfügen
m_prBar.setValue(wert);
m_prBar.validate();
m_prBar.repaint();
}
}
}.start();
//Thread beendet
// Socket und Datentransfer
clientSocket = new Socket(InetAddress.getByName(m_ip), m_port);
OutputStream out = clientSocket.getOutputStream();
InputStream in = new FileInputStream(m_pfad);
byte[] buffer = new byte[1024];
int n;
while ((n = in.read(buffer)) != -1)
{
out.write(buffer, 0, n);
}
in.close();
out.close();
calc_bar=false;
}
Wieso? wenn ich sie hier repainte? Wie kann man das Problem lösen thx für eure hilfe