jTextArea Text sofort setzen: Statusbox für Programmablauf

Status
Nicht offen für weitere Antworten.

KaiB

Mitglied
Hallo zusammen,
ich würde gerne ein jTextArea Element als Statusbox für weitere Programmabläufe nutzen.
Also eine Art Logdatei die sich parallel zum Ablauf des Programms aufbaut..

Beim Klick auf einen Button soll das Ganze losgehen:
Code:
private JButton getJButton() {
  if (jButton == null) {
      jButton = new JButton();
      jButton.setText("Start");
      jButton.addActionListener(new java.awt.event.ActionListener() {
	 public void actionPerformed(java.awt.event.ActionEvent e) {

	  // Panel mit dem jTextArea Objekt laden (VOR dem Programmablauf)
          Frame.getContentPane().setVisible(false);
	  Frame.setContentPane(getJPanel4());	
	  Frame.getContentPane().setVisible(true);	
										
		try{ 
                      // Programmablauf der geloggt werden soll
                      // .........
			TextArea.append("Soll sofort im Textfeld erscheinen...");
                     //.........
                    }catch(Exception ex){
			ex.printStackTrace();
		   }
});

}
return jButton;
}

Ich bin also auf der Suche nach einer Art repaint/refresh/redraw... was auch immer Methode..
Kann jemand helfen?
Vielen Dank im Voraus!
MfG
Kai
 
verstehe das Problem nicht. Das man mit JTexArea#setText(String s) den inhalt einer textarea festlegt, weißt du schon, oder?
 
Ok es war vielleicht etwas undeutlich ausgedrückt...

Wie ich Text in die TextArea bekomme weiß ich.. zB mit der Methode "append"
Code:
         TextArea.append("Soll sofort im Textfeld erscheinen...");
Das Problem besteht darin, dass ich einen länderen Funktionsablauf habe. Es werden zB Dokumente auf verschiedene Server kopiert, Ordner angelegt, Rechte vergeben usw..
Alles das würde ich gerne zur Laufzeit! des Programmes in der jTextAre ausgeben.

Diese ganze Funktionalität habe ich in der actionPerformed Methode implementiert:

Code:
public void actionPerformed(java.awt.event.ActionEvent e) {

     // Panel mit dem jTextArea Objekt laden (VOR dem Programmablauf)
          Frame.getContentPane().setVisible(false);
     Frame.setContentPane(getJPanel4());   
     Frame.getContentPane().setVisible(true);   
                              
      try{
                      // Programmablauf der geloggt werden soll
                      // .........
         TextArea.append("Soll sofort im Textfeld erscheinen...");
                     //.........
                    }catch(Exception ex){
         ex.printStackTrace();
         }
});

Das Problem besteht darin, dass trotz TextArea.append("...") erst die gesamte Funktion actionPerformed ausgeführt wird und erst nach Ablauf dieser werden die Veränderungen in der TextBox, die ich während des Ablaufs vorgenommen habe quasi auf einen Schlag sichtbar..
Ich würde diese Informationen gerne sofort (zur Laufzeit) in der TextArea sichtbar machen. Dazu muss eine Art Refresh des Frames bzw. des Panels was auch immer passieren...
Und genau darauf bezieht sich die Frage!
Wie bekomme ich diesen vorgezogenen refresh innerhalb meiner actionPerformed Methode hin, damit ich den Programmablauf zur Laufzeit für den Benutzer abbilden kann.
Hoffe das war verständlicher! Danke für jede Antwort
 
Vielen Dank für den Tipp mit SwingWorker!
Ist genau das, was ich gesucht habe!
Jetzt läuft alles so, wie ich es will!
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben