Hallo liebes Forum,
ich habe ein Problem, an dem ich bereits zwei Tage hänge und einfach nicht weiter komme...
Ich habe ein paymentPanel, welches von JPanel erbt. Dort ist nur ein JLabel und ein Jbutton drin. Klickt man auf den Button wird eine Methode namens startRead() in paymentPanel ausgeführt, von dort aus wird noch eine zweite Methode ausgeführt. Diese Methode holt sich von einem Server ständig Statusinformationen. Diese Statusinformationen würde ich gerne in dem Label anzeigen. Das Problem ist, dass das nicht funktioniert. Die zweite Methode die aufgerufen wird holt sich die Daten innerhalb einer while(true) Schleife und wenn die gelesenen Bytes passen dann soll er das Label verändern:
Bei einer bestimmten Bytefolge, welche auf jeden fall auftritt wird die while Schleife auch verlassen. Das Label wird einfach nicht verändert. Ich habe es auch schon mit updateUI(); versucht aber alles ohne erfolg.
Ich weiß, dass das Problem bei dem Thread liegt, leider weiß ich nicht wie ich das Lösen kann. Ich friere mit der while Schleife die GUI ein, das sehe ich an dem Button den ich drücke, dieser friert ein und die gesamte Oberfläche ist eingefroren. Aber ich habe keine Ahnung wie ich das ändern kann. Ich habe über das Thread Problem gelesen und habe es auch schon über eine Methode versucht :
aber auch das funktioniert nicht. Ich hoffe ihr könnt mir da irgendwie weiter helfen.
Vielen Dank.
ich habe ein Problem, an dem ich bereits zwei Tage hänge und einfach nicht weiter komme...
Ich habe ein paymentPanel, welches von JPanel erbt. Dort ist nur ein JLabel und ein Jbutton drin. Klickt man auf den Button wird eine Methode namens startRead() in paymentPanel ausgeführt, von dort aus wird noch eine zweite Methode ausgeführt. Diese Methode holt sich von einem Server ständig Statusinformationen. Diese Statusinformationen würde ich gerne in dem Label anzeigen. Das Problem ist, dass das nicht funktioniert. Die zweite Methode die aufgerufen wird holt sich die Daten innerhalb einer while(true) Schleife und wenn die gelesenen Bytes passen dann soll er das Label verändern:
Java:
if(dataString.contains(status1){
infoLabel.setText(status1);
}
Bei einer bestimmten Bytefolge, welche auf jeden fall auftritt wird die while Schleife auch verlassen. Das Label wird einfach nicht verändert. Ich habe es auch schon mit updateUI(); versucht aber alles ohne erfolg.
Ich weiß, dass das Problem bei dem Thread liegt, leider weiß ich nicht wie ich das Lösen kann. Ich friere mit der while Schleife die GUI ein, das sehe ich an dem Button den ich drücke, dieser friert ein und die gesamte Oberfläche ist eingefroren. Aber ich habe keine Ahnung wie ich das ändern kann. Ich habe über das Thread Problem gelesen und habe es auch schon über eine Methode versucht :
Java:
private void changeJLabel( final String text) {
EventQueue.invokeLater(new Runnable() {
@Override
public void run() {
infoLabel.setText(text);
}
});
}
aber auch das funktioniert nicht. Ich hoffe ihr könnt mir da irgendwie weiter helfen.
Vielen Dank.