Konsolenprg-Ausgabe in GUI geleitet - Brauche ich Threads?

Status
Nicht offen für weitere Antworten.

markus_p

Neues Mitglied
Hallo Forum,

ich habe ein Konsolenprogramm geschrieben, welches auch ueber eine GUI angesprochen werden soll. Das Programm macht seine Ausgaben ueber System.out.println();.

Um diese in der GUI sichtbar zu machen habe ich ein JTextArea weches die Ausgaben anzeigt. Dies geschieht ueber eine Klasse welche OutputStream so erweitert, dass die Methoden write() in die TextArea ausgeben. Das Ganze wird ueber
Code:
System.setOut(new PrintWriter( new MyOutputStream(MyJTextArea), true));
eingebunden.

Auf der GUI befindet sich eine Start-Schaltflaeche welche mit einer eigenen Instanz von ActionListener verbunden ist. Uber die Methode actionPerformed() wir dann die Verarbeitung gestartet.

Soweit ich das Modell bisher verstanden habe wird bei Klick auf den Button der Inhalt der Methode actionPerformed() in einem Event-dispatching-Thread ausgefuehrt.

In meinem Programm ist die Abfolge hier so:

1. Eingabefelder inaktiv schalten
2. Verabeitung starten (dauert ein paar Minuten, erstellt Ausgaben ueber println())
3. Eingabefelder wieder aktivieren

Was tatsaechlich passiert ist:

Klick auf den Start-Button
Button bleibt im Zustand (optisch) gedrueckt
Nach Ende wird die Ausgabe angezeigt


Mein Frage waere nun: Wieso wird die Ausgabe nicht auf der GUI angezeigt? Wieso werden die Eingabefelder nicht vor der Verarbeitung inaktiv geschaltet?

Ist es eventuell so, dass die Aenderungen des Event-dispatching-Threads erst sichtbar werden wenn dieser wieder an den Haupt-Thread uebergibt? Sprich, der Haupt-Thread welcher, so meine Vermutung, auch die GUI aktuell haelt muss auf das Ende des Event-dispatching-Threads warten?


Ueber ein paar Tipps wuerde ich mich freuen.

Gruss,
Markus
 

Wildcard

Top Contributor
Längere Berechnungen musst du in einen eigenen Thread auslagern damit deine GUI nicht blockiert.
 

markus_p

Neues Mitglied
Danke fuer den Tipp. Ich hatte etwas Verstaendnissprobleme wie die Threads zusammenspielen.

Mit den Informationen unter http://java.sun.com/docs/books/tutorial/uiswing/misc/threads.html konnte ich mein Problem sehr leicht loesen.

Hier der fuer mich masgebende Code:

Code:
//OLD CODE:
public void actionPerformed(ActionEvent e) {
    ...
    //...code that might take a while to execute is here...
    ...
}

//BETTER CODE:
public void actionPerformed(ActionEvent e) {
    ...
    final SwingWorker worker = new SwingWorker() {
        public Object construct() {
            //...code that might take a while to execute is here...
            return someValue;
        }

        //Runs on the event-dispatching thread.
        public void finished() {
            // Update GUI elements or whatever...
        }
    };
    worker.start();  //required for SwingWorker 3
    ...
}

Die SwingWorker Klasse kann hier herutergeladen werden:
http://java.sun.com/docs/books/tutorial/uiswing/misc/example-1dot4/SwingWorker.java


Schoenen Tag,
Markus
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
D graphische Ausgabe zu langsam (vsync gzielt abschaltbar?)... AWT, Swing, JavaFX & SWT 13
D Hohe Prozessorauslastung bei Ausgabe auf TextArea AWT, Swing, JavaFX & SWT 2
P GUI Ausgabe des Strings AWT, Swing, JavaFX & SWT 3
S Ausgabe aktualisiert sich nur nach 2. Klick AWT, Swing, JavaFX & SWT 17
ralfb1105 JavaFX MVC: Thread in Model Class mit Ausgabe in TextArea AWT, Swing, JavaFX & SWT 10
F JavaFX textField Ausgabe automatisch kopieren AWT, Swing, JavaFX & SWT 7
S Ausgabe in JTextArea AWT, Swing, JavaFX & SWT 13
R Ausgabe über JOptionPane.showMessageDialog funktioniert nicht AWT, Swing, JavaFX & SWT 2
M Ausgabe der HSL oder RGB Zusammensetzung einer Farbe (JColorChooser AWT, Swing, JavaFX & SWT 1
N Swing Jtextfield und Ausgabe von Wärungsbeträgen AWT, Swing, JavaFX & SWT 3
KilledByCheese Swing Seltsame Ausgabe nach ButtonClick AWT, Swing, JavaFX & SWT 1
P JavaFX Komische konsolen Ausgabe (nur roter Pfad) AWT, Swing, JavaFX & SWT 7
D Swing Warum erhalte ich keine Ausgabe? Funktioniert der equals-vergleich in actionPeformed nicht richtig? AWT, Swing, JavaFX & SWT 3
L Ausgabe in JEditorPane mittels HTMLEditorKit zeigt auf bestimmten Systemen falsche Zeichen AWT, Swing, JavaFX & SWT 1
H Swing jComboBox Ausgabe -1/null AWT, Swing, JavaFX & SWT 4
A Swing Zwei Klassen mit Textfeld Eingaben vergleichen und Ausgabe erzeugen AWT, Swing, JavaFX & SWT 10
A Swing 2 JSlider verknüpfen und mit einem JTextField vergleichen, dann Ausgabe AWT, Swing, JavaFX & SWT 5
X JTextField Ausgabe klappt nicht AWT, Swing, JavaFX & SWT 4
A Swing Focus der Radio Buttons + text bleibt gleich und gleichzeitige ausgabe zweier Objekte in 1. Fenster AWT, Swing, JavaFX & SWT 3
T Swing Ausgabe aus ArrayList in Klasse1 in jTextArea in Klasse2 AWT, Swing, JavaFX & SWT 2
L Schöne Ausgabe in Form einer Liste AWT, Swing, JavaFX & SWT 5
E Keine Ausgabe auf Console und List AWT, Swing, JavaFX & SWT 13
J Swing Ausgabe in JTable AWT, Swing, JavaFX & SWT 3
J Swing Ausgabe in einem JFrame AWT, Swing, JavaFX & SWT 8
S String Array Ausgabe im JLabel ??? AWT, Swing, JavaFX & SWT 8
E Keine Ausgabe von JList bei drücken von Button auf die Konsole AWT, Swing, JavaFX & SWT 7
P Ausgabe Label AWT, Swing, JavaFX & SWT 6
D Fenster will keine Ausgabe geben>:( AWT, Swing, JavaFX & SWT 3
kniffel Ausgabe von leeren JTable Zeilen AWT, Swing, JavaFX & SWT 3
C TextArea Ausgabe immer ganz oben AWT, Swing, JavaFX & SWT 3
S TextArea ausgabe ohne JFrame zu implementieren AWT, Swing, JavaFX & SWT 2
M Swing Ausgabe in JTextArea verzögern AWT, Swing, JavaFX & SWT 7
R JComboBox Ausgabe in String speichern AWT, Swing, JavaFX & SWT 3
H Swing Ausgabe auf 2 nachkomma stellen beschränken AWT, Swing, JavaFX & SWT 3
B Ausgabe schrittweise AWT, Swing, JavaFX & SWT 13
D Vollbild ausgabe AWT, Swing, JavaFX & SWT 2
M Swing Probleme bei der Ausgabe der JList AWT, Swing, JavaFX & SWT 2
J Swing Swing Ein/Ausgabe von einem Datum AWT, Swing, JavaFX & SWT 3
H Ausgabe an Textfeld JTextField AWT, Swing, JavaFX & SWT 3
W Welche Text ausgabe möglichkeit ist geeignet... AWT, Swing, JavaFX & SWT 6
S Tabellen und Text Ausgabe in Swing GUI AWT, Swing, JavaFX & SWT 3
Z GUI-Ausgabe mit Bild und Sound AWT, Swing, JavaFX & SWT 3
M Ausgabe nach Klick auf JButton funktioniert nicht. AWT, Swing, JavaFX & SWT 6
D JTable Viewport - Ausgabe der sichtbaren Spalten AWT, Swing, JavaFX & SWT 2
F dynamische Ausgabe eines extenen Programms umleiten AWT, Swing, JavaFX & SWT 6
J Bildfilterung und Ausgabe in ein ImageIcon AWT, Swing, JavaFX & SWT 2
S Dynamische Ausgabe im JTextField AWT, Swing, JavaFX & SWT 7
L Problem bei der Ausgabe JTextArea AWT, Swing, JavaFX & SWT 3
S Eingeschränkte Ausgabe auf 2. Bildschirm? (Laptop VGA Output AWT, Swing, JavaFX & SWT 4
P SWT Performance : "Text" - Ausgabe beschleunigen ? AWT, Swing, JavaFX & SWT 21
G Aktualisierung der Ausgabe in SWT AWT, Swing, JavaFX & SWT 2
Z Die ausgabe.setText(b.getisbn()); überschreibt sich jedesmal AWT, Swing, JavaFX & SWT 4
E Frage? Warum funktioniert die grafische Ausgabe nicht? AWT, Swing, JavaFX & SWT 4
J DB-Ausgabe realisieren? AWT, Swing, JavaFX & SWT 2
M Ausgabe mit JOptionPane AWT, Swing, JavaFX & SWT 6
G Bedingte Ausgabe beim JTree AWT, Swing, JavaFX & SWT 4
V JTree Children Ausgabe Problem AWT, Swing, JavaFX & SWT 2
V Tree Ausgabe Problem AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben