Hallo Leute,
ich sitze schon seit einer Weile vor folgendem Problem:
Ich möchte per Button eine Hilfsfunktion ausführen, während diese Hilfsfunktion läuft, soll ein gegebenes JTextArea seinen Inhalt laufend ändern. Das Problem ist, dass es erst am Ende auf einmal aktualisiert wird, was ich nicht verstehe.
Hier mal der Code:
Das ist nun nicht mein original Quelltext, verdeutlicht aber das Problem.
Ich weiß nicht wie ich es nun lösen soll, s.d. die Zahlen nacheinander ausgegeben werden.
Aus Tests weiß ich, dass wenn ich die for-Schleife in den Konstruktor von Oberfläche einfüge, die Ausgabe richtig erscheint. Nur will ich die ja erst per Button-klick erzeugen.
Weder im Netz, noch im Forum bin ich fündig geworden.
Wäre euch sehr dankbar, wenn ihr mir den einen oder anderen Ratschlag geben könntet.
ich sitze schon seit einer Weile vor folgendem Problem:
Ich möchte per Button eine Hilfsfunktion ausführen, während diese Hilfsfunktion läuft, soll ein gegebenes JTextArea seinen Inhalt laufend ändern. Das Problem ist, dass es erst am Ende auf einmal aktualisiert wird, was ich nicht verstehe.
Hier mal der Code:
Java:
import java.awt.Dimension;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JTextArea;
public class Oberflaeche implements Runnable{
JFrame fenster;
JTextArea area;
JButton b = new JButton();
public Oberflaeche(){
fenster = new JFrame("Test");
fenster.setSize(new Dimension(300,300));
fenster.setVisible(true);
fenster.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
fenster.setLayout(null);
area = new JTextArea();
area.setBounds(0, 0, 50, 200);
fenster.add(area);
b = new JButton("test");
b.setBounds(100, 100, 100, 50);
fenster.add(b);
b.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent arg0) {
draw();
}
});
Thread t = new Thread(this);
t.start();
}
public void draw(){
for(int i=0; i<5; i++){
area.append(i+"\n");
try {Thread.sleep(1000);}
catch (InterruptedException e) {}
}
}
public static void main(String[] args) {
Oberflaeche test = new Oberflaeche();
}
public void run() {
while(true){
fenster.repaint();
try {Thread.sleep(50);}
catch (InterruptedException e) {}
}
}
}
Das ist nun nicht mein original Quelltext, verdeutlicht aber das Problem.
Ich weiß nicht wie ich es nun lösen soll, s.d. die Zahlen nacheinander ausgegeben werden.
Aus Tests weiß ich, dass wenn ich die for-Schleife in den Konstruktor von Oberfläche einfüge, die Ausgabe richtig erscheint. Nur will ich die ja erst per Button-klick erzeugen.
Weder im Netz, noch im Forum bin ich fündig geworden.
Wäre euch sehr dankbar, wenn ihr mir den einen oder anderen Ratschlag geben könntet.