Ein TextFeld als mit Echtzeitausgabe? (Wie bei der Console)

Status
Nicht offen für weitere Antworten.

alphaChill

Aktives Mitglied
Moin an alle,

ich programmiere derzeit mit Java-Eclipse (3.1) ein kleines Programm für Sportübungen. Auf der Console läuft das Programm auch ohne Probleme. Nur wenn ich das ganze in ein Programm mit Oberfläche packen möchte, wird der erzeugte Text erst nachdem das Programm fertig ist auf die "JTextArea" ausgegeben. Ich hätte aber jetzt ganz gern, dass wenn ich z.B. dies Schleife hier habe:

Code:
          for (int i = 10; i > 0; i--) {

            anzeigefenster.append(String.valueOf(i) + "\n");

            Console.println(i);
            try {
              Thread.sleep(1000);
            }
            catch (InterruptedException e2) {

              e2.toString();
            }
          }

auch nach jeder Sekunde eine Ziffer ausgeben wird und nicht nach 10 Sekunden auf einen Schlaf alle Zahlen. Kann mir jemand 'n Tipp geben, mit welchen Pane bzw. mit welcher Methode ich das am besten mache? Hier der restliche Programmcode:

Code:
package b;

import java.awt.BorderLayout;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JTextArea;
import javax.swing.JScrollPane;

import support.Console;

public class Test extends JFrame {

  private JPanel      jContentPane   = null;
  private JLabel      statusLabel    = null;
  private JPanel      Panelcenter    = null;
  private JButton     btnbeenden     = null;
  private JButton     btnokay        = null;
  private JScrollPane jScrollPane    = null;
  private JTextArea   anzeigefenster = null;

  /**
   * This method initializes Panelcenter
   * 
   * @return javax.swing.JPanel
   */
  private JPanel getPanelcenter() {
    if (Panelcenter == null) {
      Panelcenter = new JPanel();
      Panelcenter.setLayout(null);
      Panelcenter.add(getBtnbeenden(), null);
      Panelcenter.add(getBtnokay(), null);
      Panelcenter.add(getJScrollPane(), null);
    }
    return Panelcenter;
  }

  /**
   * This method initializes btnbeenden
   * 
   * @return javax.swing.JButton
   */
  private JButton getBtnbeenden() {
    if (btnbeenden == null) {
      btnbeenden = new JButton();
      btnbeenden.setBounds(new java.awt.Rectangle(30, 382, 92, 24));
      btnbeenden.setText("Beenden");
      btnbeenden.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {
          System.exit(0);
        }
      });
    }
    return btnbeenden;
  }

  /**
   * This method initializes btnokay
   * 
   * @return javax.swing.JButton
   */
  private JButton getBtnokay() {
    if (btnokay == null) {
      btnokay = new JButton();
      btnokay.setLocation(new java.awt.Point(158, 382));
      btnokay.setText("Start");
      btnokay.setSize(new java.awt.Dimension(92, 24));
      btnokay.addActionListener(new java.awt.event.ActionListener() {
        public void actionPerformed(java.awt.event.ActionEvent e) {

          for (int i = 10; i > 0; i--) {

            anzeigefenster.append(String.valueOf(i) + "\n");

            Console.println(i);
            try {
              Thread.sleep(1000);
            }
            catch (InterruptedException e2) {

              System.out.println(e2.getMessage());
            }
          }

        }
      });
    }
    return btnokay;
  }

  /**
   * This method initializes jScrollPane
   * 
   * @return javax.swing.JScrollPane
   */
  private JScrollPane getJScrollPane() {
    if (jScrollPane == null) {
      jScrollPane = new JScrollPane();
      jScrollPane.setBounds(new java.awt.Rectangle(18, 12, 266, 357));
      jScrollPane.setViewportView(getAnzeigefenster());
    }
    return jScrollPane;
  }

  /**
   * This method initializes anzeigefenster
   * 
   * @return javax.swing.JTextArea
   */
  private JTextArea getAnzeigefenster() {
    if (anzeigefenster == null) {
      anzeigefenster = new JTextArea();
    }
    return anzeigefenster;
  }

  /**
   * @param args
   */
  public static void main(String[] args) {
    Test t1 = new Test();

  }

  /**
   * This is the default constructor
   */
  public Test() {
    super();
    initialize();
  }

  /**
   * This method initializes this
   * 
   * @return void
   */
  private void initialize() {
    this.setSize(320, 480);
    this.setDefaultCloseOperation(javax.swing.JFrame.EXIT_ON_CLOSE);
    this.setContentPane(getJContentPane());
    this.setTitle("Zeitplaner");
    this.setVisible(true);
  }

  /**
   * This method initializes jContentPane
   * 
   * @return javax.swing.JPanel
   */
  private JPanel getJContentPane() {
    if (jContentPane == null) {
      statusLabel = new JLabel();
      statusLabel.setText("(c) 2007, Thomas Jäger");
      statusLabel
                 .setBorder(javax.swing.BorderFactory
                                                     .createBevelBorder(javax.swing.border.BevelBorder.LOWERED));
      statusLabel
                 .setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
      jContentPane = new JPanel();
      jContentPane.setLayout(new BorderLayout());
      jContentPane.add(statusLabel, java.awt.BorderLayout.SOUTH);
      jContentPane.add(getPanelcenter(), java.awt.BorderLayout.CENTER);
    }
    return jContentPane;
  }

} // @jve:decl-index=0:visual-constraint="154,34"

Gruß alphaChill


[Edit] Habe eben das Programm mal nach dieser Anleitung (http://www.uni-koeln.de/rrzk/kurse/unterlagen/java/allg/eclipse/JarExport.html) exportiert und raus kam das hier:
http://main.ma.funpic.de/ebayupload/sport.jar
Das Programm lässt sich immerhin schon mal öffnen und schließen, aber wenn ich auf "Start" klicke sehe ich eine "10" und das war's ... warum wird die Schleife nicht ausgeführt? Ich versteht's nicht... :(
 

*Hendrik

Bekanntes Mitglied
Lesson: Concurrency in Swing und Lesson: Concurrency

Auf die Schnelle z.B.:
Code:
  private JButton getBtnokay() {
      if (btnokay == null) {
          btnokay = new JButton();
          btnokay.setLocation(new java.awt.Point(158, 382));
          btnokay.setText("Start");
          btnokay.setSize(new java.awt.Dimension(92, 24));
          btnokay.addActionListener(new java.awt.event.ActionListener(){
              public void actionPerformed(java.awt.event.ActionEvent e) {
                  
                  Thread thread = new Thread(){
                      public void run() {
                          for (int i = 10; i > 0; i--) {
                              
                              anzeigefenster.append(String.valueOf(i) + "\n");
                              
                              System.out.println(i);
                              try {
                                  Thread.sleep(1000);
                              } catch (InterruptedException e2) {
                                  
                                  System.out.println(e2.getMessage());
                              }
                          }
                      }
                  };
                  thread.start();                                                                    
                  
              }
          });
      }
    return btnokay; 
  }

Dein JAR gibt wahrscheinlich nur 10 aus, weil das Package support.Console nicht eingebunden ist und deswegen eine Exception auftritt. Wahrscheinlich brauchst Du das Package auch nicht, wenn Du mit System.out arbeitest.
 

alphaChill

Aktives Mitglied
Also, dass er nur die 10 ausgegeben hat, lag an dem Console.println... danke... und dass er alles auf einen Schlag ausgegeben hat, lag daran, dass ich das ganze nicht im Hintergrund hab laufen lassen. Also hab ich nun eine Thread-Methode genommen und schon hat alles geklappt :)

Anleitung hab ich hierher:

www.cs.helsinki.fi/u/vihavain/k03/Java/JavathreadsandGUI.html


Und der komplette Programmcode, der in der Methode "actionPerformed" für den Button steht sieht wie folgt aus:



Code:
new Thread () {
            public void run () {


              anzeigefenster.append("Start in:"+"\n");
              System.out.println("Start in:");

              
              for (int i = 10; i > 0; i--) {     
                try {
                  Thread.sleep(1000);
                }
                catch (InterruptedException e) {
                  // TODO Auto-generated catch block
                  e.printStackTrace();
                }
                anzeigefenster.append(String.valueOf(i+"\n"));
                System.out.println(i);

              }
         
              
              

            }}.start ();
 

HoaX

Top Contributor
zugriffe auf awt/swing-komponenten darf man nur aus dem awt-eventhread machen - in deinem link wird invokeLater/invokeAndWait oft genug genannt, schau dir die mal an
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Textfeld zurücksetzen Java Basics - Anfänger-Themen 3
G JSP Textfeld einlesen Java Basics - Anfänger-Themen 2
M Regex nur Zahlen und Punkt zulassen, Keine Eingabe(Leeres TextFeld) nicht zulassen Java Basics - Anfänger-Themen 6
J JDatePicker: Datum wird nicht in Textfeld übernommen Java Basics - Anfänger-Themen 5
N Zeichen in einem Textfeld zählen und hinterlegen Java Basics - Anfänger-Themen 6
M Erste Schritte Mit Variable verschiedene Texte in Textfeld einfügen Java Basics - Anfänger-Themen 27
M Wie kann ich hier ein Textfeld hinzufügen Java Swing? Java Basics - Anfänger-Themen 1
M Wie kann ich im JAVA-GUI im Textfeld ein Array speichern Java Basics - Anfänger-Themen 4
T Erste Schritte Textfeld abfragen ob etwas enthalten ist. Java Basics - Anfänger-Themen 17
E Wert in Textfeld schreiben Java Basics - Anfänger-Themen 1
E Anzahl Datensätze in Textfeld Java Basics - Anfänger-Themen 5
N Auf TextFeld aus anderer Klasse zugreifen ohne es zu übergeben Java Basics - Anfänger-Themen 3
L Text eingeben und im Textfeld auslesen lassen Java Basics - Anfänger-Themen 2
N Problem mit Swing Textfeld und Zugriff aus anderer Klasse Java Basics - Anfänger-Themen 6
B Datentypen Textfeld auf Nicht-Zahlen überprüfen Java Basics - Anfänger-Themen 10
B Wert aus TextFeld in Canvas benutzen Java Basics - Anfänger-Themen 0
P Textfeld auslesen Java Basics - Anfänger-Themen 4
S TextFieldFilter - Wenn Textfeld leer dann setze 0 Java Basics - Anfänger-Themen 9
W Textfeld auslesen und in Liste speichern Java Basics - Anfänger-Themen 11
D Leeres Textfeld nicht auslesen Java Basics - Anfänger-Themen 3
L KeyListener ohne textfeld Java Basics - Anfänger-Themen 4
J Problem mit String von Textfeld Java Basics - Anfänger-Themen 13
H Textfeld auslesen lassen Java Basics - Anfänger-Themen 11
N Textfeld- und Buttonerkennung einer Webseite Java Basics - Anfänger-Themen 6
M textfeld auslesen und in liste einlesen Java Basics - Anfänger-Themen 2
R GUI - Liste mit Textfeld und Radiobuttons Java Basics - Anfänger-Themen 8
C Buttons über Textfeld beschriften Java Basics - Anfänger-Themen 10
E Eingabemöglichkeiten für Textfeld begrenzen Java Basics - Anfänger-Themen 6
G String-Wert aus Textfeld auslesen Java Basics - Anfänger-Themen 9
D Canvas löschen über MouseEntered in Textfeld Java Basics - Anfänger-Themen 6
X Methoden [GWT] Dynamisches Textfeld PopUp erstellen Java Basics - Anfänger-Themen 6
F TextFeld überprüfen Java Basics - Anfänger-Themen 20
T text von textfeld auslesen und wieder reinschreiben Java Basics - Anfänger-Themen 10
T Erste Schritte Textfeld übernimmt Größe nicht Java Basics - Anfänger-Themen 11
Joew0815 Homepage Textfeld füllen und Button klicken Java Basics - Anfänger-Themen 10
Kenan89 TextFeld und Zahlen Java Basics - Anfänger-Themen 14
B Textfeld aufpoppen lassen Java Basics - Anfänger-Themen 15
S Werte aus einem Textfeld lesen Java Basics - Anfänger-Themen 13
H Focus auf Textfeld in JOptionPane Java Basics - Anfänger-Themen 2
D Interpreter-Fehler NumberFormatException Textfeld Java Basics - Anfänger-Themen 24
C Mit Java Textfeld einer externen Anwendung auslesen Java Basics - Anfänger-Themen 9
J Textfeld für Taschenrechner Java Basics - Anfänger-Themen 3
U Drag&Drop von Tabelle in Textfeld Java Basics - Anfänger-Themen 3
M Inhalt Textfeld prüfen Java Basics - Anfänger-Themen 4
G Exception - Unvollständige Eingabe im Textfeld Java Basics - Anfänger-Themen 2
F Textfeld: String (x,xx) --> double Java Basics - Anfänger-Themen 8
F Text aus Textfeld1 in Textfeld 2 kopieren Java Basics - Anfänger-Themen 5
D Problem mit TextFeld Array Java Basics - Anfänger-Themen 18
R Textfeld "sperren", Text darf nicht eingegeben werden - wie realisierbar? Java Basics - Anfänger-Themen 2
I auf Textfeld aus anderer Klasse heraus zugreifen Java Basics - Anfänger-Themen 2
W OOP Datum aus Access in Textfeld schreiben ohne Stunden/Minuten/Sekunden Java Basics - Anfänger-Themen 2
J Escape taste geht ohne cursor im textfeld nicht. Java Basics - Anfänger-Themen 4
S Excel Textfeld auslesen Java Basics - Anfänger-Themen 6
1 Textfeld aktiv beim starten des Programms Java Basics - Anfänger-Themen 5
J double wert aus textfeld auslesen Java Basics - Anfänger-Themen 2
A Grafisches Textfeld zur Ausgabe Java Basics - Anfänger-Themen 3
H Textfeld Werte Java Basics - Anfänger-Themen 14
S Textfeld Wert auslesen Java Basics - Anfänger-Themen 2
A Mehrere verschieden Farben / Textfeld Java Basics - Anfänger-Themen 2
M Textfeld soll nur Zahlen erlauben Java Basics - Anfänger-Themen 26
G Textfeld und Label in einem Tab? Anfänger braucht Hilfe Java Basics - Anfänger-Themen 3
E Textfeld aktualisieren Java Basics - Anfänger-Themen 3
L Textfeld Inhalt löschen Java Basics - Anfänger-Themen 2
G Exception bei leerem Textfeld Java Basics - Anfänger-Themen 12
Antoras Klasse in einem Textfeld zeichnen Java Basics - Anfänger-Themen 4
J Zahl in Textfeld hinzufügen Java Basics - Anfänger-Themen 10
P Tab in textfeld einfügen Java Basics - Anfänger-Themen 4
C Textfeld Eingabe überprüfen! Java Basics - Anfänger-Themen 12
B Textfeld auslesen Java Basics - Anfänger-Themen 5
R textfeld größe definieren Java Basics - Anfänger-Themen 2
R Textfeld und zahlen? Java Basics - Anfänger-Themen 4
C alle möglichen Datumseingaben im Textfeld abfangen Java Basics - Anfänger-Themen 12
A Ausgabe einer variablen im textfeld Java Basics - Anfänger-Themen 3
L Nur ganzzahlige Zahlen im Textfeld Java Basics - Anfänger-Themen 3
B Text per Button von ein textfeld in das andere? Java Basics - Anfänger-Themen 9
S voreingestellte zahl im textfeld Java Basics - Anfänger-Themen 2
H Text aus Textfeld per Actionlistener in Label ausgeben. Java Basics - Anfänger-Themen 6
V editierbares textfeld Java Basics - Anfänger-Themen 2
R Frage zur Länge von Textfeld und String Java Basics - Anfänger-Themen 4
G textfeld nur mit zahlen Java Basics - Anfänger-Themen 2
G Textfeld zweimal Auslesen - Probleme Java Basics - Anfänger-Themen 6
V Tastatur Abfrage im Lisener für eine Auswahl üder Textfeld Java Basics - Anfänger-Themen 8
G AWT-Textfeld zeichenanzahl begrentzen Java Basics - Anfänger-Themen 4
G Wie Text in Textfeld zentrieren? Java Basics - Anfänger-Themen 2
W Aus Textfeld ein "MySQL Date" auslesen Java Basics - Anfänger-Themen 2
I Was in Swing, was in AWT zeichnen & Textfeld formatierba Java Basics - Anfänger-Themen 4
N in textfeld nur zahlen und punkl Java Basics - Anfänger-Themen 12
G Ausgabe des Java Ergebnisses in Textfeld Java Basics - Anfänger-Themen 17
S Array im Textfeld ausgeben Java Basics - Anfänger-Themen 7
B Leeres Textfeld, was nun. Java Basics - Anfänger-Themen 4
G Textfeld in Frame geht nicht! :( Java Basics - Anfänger-Themen 3
B textfeld mit enter auslesen klappt nicht Java Basics - Anfänger-Themen 12
J Textfeld mit Eingabeprüfung Java Basics - Anfänger-Themen 10
Z Applet: Eingabe aus Textfeld auslesen und manipulieren Java Basics - Anfänger-Themen 3
N textfeld border . Java Basics - Anfänger-Themen 2
J Leeres Textfeld auslesen Java Basics - Anfänger-Themen 6
B Fokus auf ein Textfeld setzen? Wie? Java Basics - Anfänger-Themen 8
L Textfeld mit nur Zahlen? Java Basics - Anfänger-Themen 2
R GridBagLayout und JTextField: Textfeld ist viel zu schmal Java Basics - Anfänger-Themen 4
G Java Microedition TExtfeld in Variable einlesen Java Basics - Anfänger-Themen 4

Ähnliche Java Themen

Neue Themen


Oben