GUI in Verbindung mit invokeLater() bzw. invokeAndWait()

Status
Nicht offen für weitere Antworten.
M

Malcolm

Gast
Hallo,

kann mir einer von euch sagen warum es bei folgendem Programm nicht möglich invokeLater() einfach durch invokeAndWait() zu ersetzen?


Code:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class DelayedActionPerformed extends JFrame implements ActionListener
{
	private JLabel label;
	private JSlider slider;
	private Thread1 thread1;
	private boolean wechsel;
	
	public DelayedActionPerformed()
	{
		super("Beispiel für länger dauernden ActionListener");
		setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
		Container cont = getContentPane();
		cont.setLayout(new GridLayout(0, 1));
		
		label = new JLabel();
		cont.add(label);

		slider = new JSlider(0, 20, 10);
		slider.setPaintTicks(true);
		slider.setPaintLabels(true);
		slider.setMajorTickSpacing(5);
		slider.setMinorTickSpacing(1);
		cont.add(slider);

		JButton button = new JButton("Drück mich");
		button.addActionListener(this);
		cont.add(button);

		pack();
		setVisible(true);
	}
	
	public void setText()
	{
		wechsel =! wechsel;
		if(wechsel == true)
			label.setText(" actionPerformed wurde gestartet");
		else
			label.setText(" actionPerformed wurde beendet");
	}
	
	public int getValue()
	{
		return slider.getValue();
	}

	public void actionPerformed(ActionEvent evt)
	{
		thread1 = new Thread1(this);
	}

	public static void main(String[] args)
	{
		new DelayedActionPerformed();
	}
}


import javax.swing.*;

public class Thread1 extends Thread
{
	private DelayedActionPerformed dap;
	private Thread2 thread2;
	
	public Thread1(DelayedActionPerformed dap)
	{
		this.dap = dap;
		thread2 = new Thread2(dap);
		start();
	}
	
	public void run()
	{
		SwingUtilities.invokeLater(thread2);
		System.out.println("actionPerformed: Start");
		try
		{
			Thread.sleep(dap.getValue()*1000);
		}
		catch(InterruptedException e)
		{
		}
		System.out.println("actionPerformed: Ende");
		SwingUtilities.invokeLater(thread2);
	}
}


public class Thread2 implements Runnable
{
	private DelayedActionPerformed dap;
	private int value;
	
	public Thread2(DelayedActionPerformed dap)
	{
		this.dap = dap;
	}
	
	public void run()
	{
		dap.setText();
	}
}
 
B

Beni

Gast
Gibt es vielleicht irgendwelche Fehlermeldungen? (Wenn ja, die wären nützlich...).

Wenn ich mich recht erinnere muss ein "invokeAndWait" in einen try-catch Block hinein (siehe API).
 
M

Malcolm

Gast
Hallo,

ja genau es muss in einen try catch Block. Weiss jetzt sogar warum. Wenn nämlich invokeAndWait aus dem Event Dispatching Thread (der ja der einzige Thread ist der die GUI verändern soll) aufgerufen würde dann würde dieser Thread ewig auf sich selber warten. Es wird eine Ausnahme geworfen. Deswegen der try catch Block.

danke

mfg Malcolm
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
L Verbindung von Code und JFrame AWT, Swing, JavaFX & SWT 4
C JavaFX Edit TableView in Verbindung mit SceneBuilder AWT, Swing, JavaFX & SWT 1
L JavaFX Verbindung zwischen Beschreibung und Listener (Codebehind Klasse) AWT, Swing, JavaFX & SWT 4
D Swing Komponenten Anordnung eines Panels in Verbindung eines weiteren Panels AWT, Swing, JavaFX & SWT 9
E JMenu erscheint nach RDP-Verbindung auf falschem Desktop AWT, Swing, JavaFX & SWT 1
C JavaFX Entfernen vom "java" Menüeintrag in der Systemmenüleiste in Mac OsX in Verbindung mit JavaFX AWT, Swing, JavaFX & SWT 1
O Swing Java PhpMyAdmin verbindung AWT, Swing, JavaFX & SWT 3
P Swing Dialog zeigt keinen Inhalt in Verbindung mit JFrame AWT, Swing, JavaFX & SWT 18
C TextFeld in Verbindung zur ComboBox automatisch aktualisieren AWT, Swing, JavaFX & SWT 7
C Swing MVC Verbindung von Model und Db AWT, Swing, JavaFX & SWT 23
xehpuk Swing Box-Glue funktioniert nicht in Verbindung mit JTextField AWT, Swing, JavaFX & SWT 3
T JTextField ohne Verbindung zur Außenwelt AWT, Swing, JavaFX & SWT 3
C Swing Problem mit TableCellRenderer in Verbindung mit TableRowSorter AWT, Swing, JavaFX & SWT 2
O Verstehe ActionListener in Verbindung mit JMenuItem AWT, Swing, JavaFX & SWT 4
S Vor Exit Verbindung trennen AWT, Swing, JavaFX & SWT 3
O Bindings, dynamische Verbindung (Vorbau mit Netbeans) AWT, Swing, JavaFX & SWT 10
N Problem mit URL in Verbindung mit Bildern AWT, Swing, JavaFX & SWT 17
P Verbindung View und Controller AWT, Swing, JavaFX & SWT 3
M Swing GUI wird nach invokeLater() langsam AWT, Swing, JavaFX & SWT 19
B Frame hängt sich auf trotz invokeLater AWT, Swing, JavaFX & SWT 1
Ollek Swing SwingUtilities invokeLater und invokeAndWait AWT, Swing, JavaFX & SWT 4
X Swing GUI-Änderungen mit invokeLater AWT, Swing, JavaFX & SWT 4
B Swing invokeLater nötig beim GUI erstellen? AWT, Swing, JavaFX & SWT 10
W Swing SwingUtilities.invokeLater wie konsequent anwenden? AWT, Swing, JavaFX & SWT 3
Dit_ SwingUtilities.invokeLater und Modaler JDialog AWT, Swing, JavaFX & SWT 11
Dit_ Frage zum Thema SwingUtilities.invokeLater AWT, Swing, JavaFX & SWT 5
H invokeLater Problem AWT, Swing, JavaFX & SWT 8
I Swing Wann invokeLater() verwenden? AWT, Swing, JavaFX & SWT 7
G Frage zu SwingUtilities.invokeLater AWT, Swing, JavaFX & SWT 16
E einfache Frage zu invokeLater() AWT, Swing, JavaFX & SWT 4
G Frage zu SwingUtilities.invokeLater AWT, Swing, JavaFX & SWT 9
G Schachtelung bei invokeLater AWT, Swing, JavaFX & SWT 4
B SwingUtilities.invokeLater() AWT, Swing, JavaFX & SWT 12
F invokeLater() vs synchronized(Object) AWT, Swing, JavaFX & SWT 5
T invokeLater - Wann? AWT, Swing, JavaFX & SWT 29
L invokeLater in der main-Methode AWT, Swing, JavaFX & SWT 6
D GUI in JFrame mit invokeLater verändern AWT, Swing, JavaFX & SWT 5
hdi Swing Frage zu invokeAndWait() Exceptions AWT, Swing, JavaFX & SWT 8
T Probleme mit invokeAndWait AWT, Swing, JavaFX & SWT 13
A Problem mit InvokeAndWait - JLabel Text verändern AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben