Swing Ausgabe in JTextArea verzögern

mysticado

Aktives Mitglied
Hallo Leute,
ich sitze z.Z. an einem meiner ersten Swing-Projekte und da ich mich damit erst bekannt machen möchte, habe ich auch recht simpel angefangen.
Ich habe eine JComboBox die mehrere Items enthält und einen JSlider und ich möchte, dass wenn man auf den OK-Button drückt, eben der Name des Items aus der Combobox in meiner JTextArea ausgegeben wird. Jedoch nicht nur einmal, sondern so oft wie der JSlider eingestellt wurde.
Soweit funktioniert das auch, nur kommt nun der Kniff. Ich möchte nicht, dass wenn ich den Slider auf 10 setze, dass alle 10 Strings auf einmal erscheinen, sondern ich hätte gerne so eine Art print-Pause zwischen zwei Ausgaben, von sagen wir mal 500 ms.

Meine Idee war die, dass ich es über new Thread().sleep(500) mache, jedoch kommt da das Problem auf, dass er mir nun nicht die Pausen dort macht wo ich es möchte, sondern dass die Ausgabe gar nicht kommt und dann nach "JSlider x 500ms" gleich alles ausgibt.
Hier der wichtigste Teil des Codes - vielleicht könnt ihr mir ja sagen, was hier dran verändert werden sollte?!

Java:
 for(int i=0; i<jSlider1.getValue();i++){
           ausgabe = ausgabe+jComboBox1.getSelectedItem()+"\n";
           jTextArea1.setText(ausgabe);
           new Thread().sleep(500);
       }

Über alle Ideen & Tipps wäre ich sehr erfreut. Danke!
 

Wildcard

Top Contributor
Du brauchst einen Timer den du bei jedem Slider Event resettest wenn er schon läuft. Wenn dann 500ms abgelaufen sind ohne das ein neues Event eingetroffen ist, führst du die Aktion aus.
Wenn es dir eigentlich gar nicht um die 500ms geht, sondern du nur verhindern willst das die Aktion ausgeführt wird solange der Slider noch bewegt wird, dann kann dir das helfen:
JSlider (Java Platform SE 6)
 

mysticado

Aktives Mitglied
ohje ich glaub ich hab mein Problem falsch rübergebracht.
Also die Idee war die, dass ich den Slider z.B. auf 3 setze und in der Combobox "Text 1" auswähle. Wenn ich dann auf den OK-Button drücke, soll die Ausgabe wie folgt aussehen:

Text 1
* 500ms Pause *
Text 1
* 500ms Pause *
Text 1
* 500ms Pause *

Ich verändere den Slider also nicht während der Ausgabe! Alles was ich brauche ist eine Methode wie ich die Ausgabe nicht auf einmal raushauen kann, sondern mittels der for-schleife nach jedem loop nach einer bestimmten Zeitspanne!
 

mysticado

Aktives Mitglied
Hmm, so richtig kann ich den Timer hier nicht einsetzen, da ich eine for-schleife hab....oder komm ich grad einfach nicht drauf?
Ich möchte ja nach jedem Schleifendurchlauf eine Pause....oder gibt es vielleicht einen ganz anderen Ansatz, wo man diese Schleife vielleicht umgehen kann und die Ausgabe trotzdem so steuern kann wie ich es gern hätte??? :-/
 

eRaaaa

Top Contributor
Du brauchst die Schleife nicht. Erstelle einen Timer (evtl. besser den Swing-Timer, auch wenn append der TextArea thread-safe ist) der eben alle 500ms das Item ausgibt. Zusätzlich brauchst du nur einen counter evtl. der die Aufrufe zählt und wenn counter == jSlider1.getValue() dann rufst du stop() auf deinem Timer auf und das war`s.
 

mysticado

Aktives Mitglied
omg, ich bin jetzt total durcheinander...ich meine, danke für die Erklärung, die macht ja auch Sinn....aber meine Methode hab ich soeben total zerstört, haha.
Kannst du mir BITTE BITTE Hilfestellung leisten?!

Java:
public void berechnung(){
     int counter = 0;

        javax.swing.Timer t = new javax.swing.Timer( 500, new ActionListener() {
              public void actionPerformed( ActionEvent e ) {
                   ausgabe = ausgabe+jComboBox1.getSelectedItem()+"\n";
           jTextArea1.setText(ausgabe);
        });
        t.start();   // t.stop() beendet.
       
       jTextArea1.setText(ausgabe.substring(0, ausgabe.length()-1)+"\n----\n"); // fügt unter alle Ausgaben noch einen Strich
       ausgabe = jTextArea1.getText();
    }
 

eRaaaa

Top Contributor
Da du keine konkrete Frage hast, hier mal ein Beispiel:

Java:
/**
 * Snippet
 * 
 */
public class App {

	javax.swing.Timer timer;
	
	public App(){
		JFrame frame = new JFrame();
		JPanel panel = new JPanel(new BorderLayout());
		final JSlider slider = new JSlider(0,10);
		final JTextArea area = new JTextArea(10,1);
		panel.add(area, BorderLayout.CENTER);
		panel.add(slider,BorderLayout.PAGE_START);
		JButton start = new JButton("Start");
		panel.add(start, BorderLayout.PAGE_END);
		start.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				final String text = "Hallo Welt"; // dein Combobox String
				
				timer =new Timer(500, new ActionListener() {
					int counter = 0;
					public void actionPerformed(ActionEvent e) {
						area.append(text);
						area.append("\n");
						if(++counter==slider.getValue()){
							timer.stop();
						}
					}
				});
				timer.start();
			}
		});
		frame.add(panel);
		frame.pack();
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setLocationRelativeTo(null);
		frame.setVisible(true);
	}
	
	/**
	 * Hello Snippet
	 * 
	 * @param args
	 * @throws Exception
	 */
	public static void main(String[] args) throws Exception {
				SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				new App();
			}
		});
	}
}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
S Ausgabe in JTextArea AWT, Swing, JavaFX & SWT 13
T Swing Ausgabe aus ArrayList in Klasse1 in jTextArea in Klasse2 AWT, Swing, JavaFX & SWT 2
L Problem bei der Ausgabe JTextArea AWT, Swing, JavaFX & SWT 3
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
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
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
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
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
M Konsolenprg-Ausgabe in GUI geleitet - Brauche ich Threads? AWT, Swing, JavaFX & SWT 2
V JTree Children Ausgabe Problem AWT, Swing, JavaFX & SWT 2
V Tree Ausgabe Problem AWT, Swing, JavaFX & SWT 2
T Swing Mehrere Ausgaben in JTextArea AWT, Swing, JavaFX & SWT 2
B JPanel-Inhalte inkl. JTextarea zoomen? AWT, Swing, JavaFX & SWT 3
P JTextarea (in JScrollPane) zeigt nur die beiden letzten Einträge an? AWT, Swing, JavaFX & SWT 0
RedEagle Swing JTextArea ist leer AWT, Swing, JavaFX & SWT 13
E Warum wird Text im JTextArea erst am Programmende angezeigt ? AWT, Swing, JavaFX & SWT 1
E wie in JScrollPane auf JTextArea zugreifen AWT, Swing, JavaFX & SWT 12
K Swing 2 JTextArea parrallel scrollable AWT, Swing, JavaFX & SWT 16
Hatsi09 JTextArea Inhalt verlinken AWT, Swing, JavaFX & SWT 4
ralfb1105 jTextArea Scrollbar hinzufügen - mit Jigloo erstellt AWT, Swing, JavaFX & SWT 7
H JTextArea - farbige Zeilen .. bitte um Vorschläge zur Implementierung AWT, Swing, JavaFX & SWT 1
F 2D-Grafik JTextArea drucken bringt mieses Ergebnis AWT, Swing, JavaFX & SWT 2
Mario1409 Swing JTextArea scroll Problem AWT, Swing, JavaFX & SWT 0
Bluedaishi JTextArea gefundene Zeile nach Oben Scrollen AWT, Swing, JavaFX & SWT 13
S JTextArea Text nach oben wandern lassen AWT, Swing, JavaFX & SWT 7
Bluedaishi JtextArea AWT, Swing, JavaFX & SWT 6
V JScrollBar soll weiterscrollen, wenn Inhalt von JTextArea erweitert wird AWT, Swing, JavaFX & SWT 7
G JTextArea mit JScrollPane wird nicht angezeigt AWT, Swing, JavaFX & SWT 2
Bluedaishi JDialog modal und JTextArea AWT, Swing, JavaFX & SWT 4
F JTextarea Steuern ~ consolenanbindung AWT, Swing, JavaFX & SWT 5
F Event Handling JTextArea auf bestimmte Eingabe reagieren (Return-Taste) AWT, Swing, JavaFX & SWT 2
F JTextArea hat keinen Rahmen AWT, Swing, JavaFX & SWT 10
N JTextArea Events weiterleiten AWT, Swing, JavaFX & SWT 3
R JTextArea mit verschiedenen Textfarben AWT, Swing, JavaFX & SWT 6
M JTextArea wird nicht aktualisiert (ActionListener-Problem) AWT, Swing, JavaFX & SWT 1
HoloYoitsu jTextArea.setCaretPosition(); What am I doing wrong? AWT, Swing, JavaFX & SWT 0
S Zeilenumbruch jTextArea mit toString AWT, Swing, JavaFX & SWT 2
F Swing String[] in JTextArea ausgeben. Jeder Eintrag in neue Zeile, aber ohne "\n"- Geht das? AWT, Swing, JavaFX & SWT 3
M JTextArea - Leertaste "sperren" AWT, Swing, JavaFX & SWT 1
S Inhalt der Java-Konsole in die JTextArea AWT, Swing, JavaFX & SWT 3
M Swing JTextArea mit ScrollBar AWT, Swing, JavaFX & SWT 9
S Swing Zahl der Zeilenumbrüche in einer JTextArea bestimmen AWT, Swing, JavaFX & SWT 1
F Swing Caret in JTextArea vergrößern AWT, Swing, JavaFX & SWT 2
D JTextArea auf KeyListener Command AWT, Swing, JavaFX & SWT 6
N JFrame änliches wie JTextArea? AWT, Swing, JavaFX & SWT 2
A Swing JTextArea - Multi-Line-Editing AWT, Swing, JavaFX & SWT 2
A Swing JTextArea aus anderer Klasse in realtime aktualisieren AWT, Swing, JavaFX & SWT 3
O JTextArea befüllen AWT, Swing, JavaFX & SWT 2
G JTextArea on the fly aus anderem Programm befüllen AWT, Swing, JavaFX & SWT 4
A Swing Einrücken mehrerer Zeilen per Tab in einem JTextPane/JTextArea AWT, Swing, JavaFX & SWT 3
B JTextArea Größe an Container anpassen AWT, Swing, JavaFX & SWT 2
B Drucken der JTextArea AWT, Swing, JavaFX & SWT 4
M JTextArea Zeile hinzufügen AWT, Swing, JavaFX & SWT 4

Ähnliche Java Themen

Neue Themen


Oben