Hallo zusammen,
ich lasse ein externes Programm "S" ablaufen und leite die Ausgabe in ein Textfeld meines GUIs um; außerdem soll ein Textfeld seine Farbe und Anzeige während des Laufes ändern:
Wenn ich AWT-Komponenten für das Textfeld und die TextArea benutze, bekomme ich Status und Text sofort angezeigt (SWT ginge vermutlich auch). Verwende ich hingegen Swing-Komponenten, so aktualisierten sich diese beiden Felder erst, nachdem der Befehl S abgearbeitet wurde.
Daß es mit Swing solche Probleme gibt, ist mir klar und schon früher aufgefallen, doch verstehe ich es nicht wirklich. Ein separater Thread hat mich hier nicht weitergebracht. Daher:
1.) Wo finde ich eine schlüssige Erklärung für das Swing-Verhalten (Linke, Codebeispiele) bzw. kann mir das jemand mit ein paar kurzen Worten erklären;
2.) Wie kann ich es meine Swing-Komponenten doch dazu bringen, sich während des Programmablaufs nicht tot zu stellen?
Danke schonmal
besten Gruß
El Lobo
ich lasse ein externes Programm "S" ablaufen und leite die Ausgabe in ein Textfeld meines GUIs um; außerdem soll ein Textfeld seine Farbe und Anzeige während des Laufes ändern:
Java:
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(S);
BufferedReader input = new BufferedReader(new InputStreamReader(
pr.getInputStream()));
String line = null;
while ((line = input.readLine()) != null) {
awt_textArea.append(line + "\n");
}
...
awt_textfield_status.setBackground(new Color(255,222,128));
awt_textfield_status.setText("Working...");
Wenn ich AWT-Komponenten für das Textfeld und die TextArea benutze, bekomme ich Status und Text sofort angezeigt (SWT ginge vermutlich auch). Verwende ich hingegen Swing-Komponenten, so aktualisierten sich diese beiden Felder erst, nachdem der Befehl S abgearbeitet wurde.
Daß es mit Swing solche Probleme gibt, ist mir klar und schon früher aufgefallen, doch verstehe ich es nicht wirklich. Ein separater Thread hat mich hier nicht weitergebracht. Daher:
1.) Wo finde ich eine schlüssige Erklärung für das Swing-Verhalten (Linke, Codebeispiele) bzw. kann mir das jemand mit ein paar kurzen Worten erklären;
2.) Wie kann ich es meine Swing-Komponenten doch dazu bringen, sich während des Programmablaufs nicht tot zu stellen?
Danke schonmal
besten Gruß
El Lobo