Thread-Problem mit der Darstellung beim Sperren des Fensters

hansmueller

Bekanntes Mitglied
Hallo,

ich möchte bei meinen Programm das Fenster nach einer Benutzereingabe (z. B. Button oder Menu) komplett sperren, dann die Berechnungen ausführen lassen und dann wieder das Fenster entsperren.

Ich habe dafür eine spezielle Klasse, die als GlasPane fungiert, sämtliche Eingaben abfangen kann, den Inhalt des Fensters leicht eingraut und ein Textfeld mit einer Nachricht besitzt.

Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

/**
 *  <p>HKGlassPane</p>
 *  Eine HilfsKlasse, die dafür sorgen soll, daß das Hauptfenster nicht mehr
 *  bedient werden kann, wenn eine rechenintensive Aktion ausgeführt wird.
 *
 *  
 *  @author hansmueller
 *  
 */
public class HKGlassPane extends JComponent
{
	Border borderNachrichtenRahmen;
	
	JLabel lbNachricht;
	Color colNachrichtenHintergrund;
	Color colGlassPaneHintergrund;
	Color colGrundfarbe;
	
	Boolean bAktiviert = false;
	
	GlassPaneTastaturListener gptl;
	String strNachrichtentext;
	
	public HKGlassPane()
	{
		lbNachricht = new JLabel();//Wichtig, damit es zu keiner Nullpoint-Ecxeption beim setBackground kommt.
		
		setOpaque(false);
		colGrundfarbe = UIManager.getColor("inactiveCaptionBorder");
		
		colGlassPaneHintergrund = new Color(colGrundfarbe.getRed(), colGrundfarbe.getGreen(), colGrundfarbe.getBlue(), 128);
		
		setBackground(colGlassPaneHintergrund);
		setLayout(new GridBagLayout());

		//Das Nachrichten-JLabel:
		
		add(lbNachricht, new GridBagConstraints());
		lbNachricht.setOpaque(true);
		borderNachrichtenRahmen = new EmptyBorder(10, 10, 10, 10);
		lbNachricht.setBorder(borderNachrichtenRahmen);

		//Maus-, Tastatur- und Fokus-Events müssen abgefangen werden.

		addMouseListener(new MouseAdapter(){});
		addMouseMotionListener(new MouseMotionAdapter(){});

		gptl = new GlassPaneTastaturListener();

		setFocusTraversalKeysEnabled(false);
	}

	/**
	 * Die HKGlassPane ist zwar transparent, aber um dem Fenster ein "gesperrtes" Aussehen
	 * zu geben, muß der Hintergrund gezeichnet werden.
	 */
	@Override
	protected void paintComponent(Graphics g)
	{
		g.setColor(getBackground());
		g.fillRect(0, 0, getSize().width, getSize().height);
	}

	/**
	 * Die Hintergrundfarbe des Nachrichten-JLabels ist die selbe wie beim GlassPane,
	 * jedoch ohne den Alpha-Kanal. (Dadurch wird es nicht transparent).
	 */
	@Override
	public void setBackground(Color c)
	{
		super.setBackground(c);

		colNachrichtenHintergrund = new Color(c.getRGB());
		//System.out.println(c.toString());
		lbNachricht.setBackground(colNachrichtenHintergrund);
	}
	
	/**
	 * Diese Methode ist dafür zuständig die Tastatur zu blockieren und wieder freizugeben.
	 */
	public void mbehandleAWTEventListener()
	{
		if(bAktiviert)
		{
			Toolkit.getDefaultToolkit().addAWTEventListener(gptl, AWTEvent.KEY_EVENT_MASK);
			/*Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener()
			{
				public void eventDispatched(AWTEvent e)
				{
					if (e instanceof KeyEvent)
					{
						((KeyEvent) e).consume();
					}
				}
			}, AWTEvent.KEY_EVENT_MASK);*/
		}
		else
		{
			Toolkit.getDefaultToolkit().removeAWTEventListener(gptl);
		}
	}

	/**
	 * Macht das Fenster unbenutzbar und verändert den Mauszeiger in eine Sanduhr.
	 * @param p_Nachrichtentext Der Text wird mittig im Fenster angezeigt.
	 * 
	 */
	public void mAktiviereGlasPane(String p_Nachrichtentext)
	{	
		if (strNachrichtentext != null && strNachrichtentext.length() > 0)
		{
			lbNachricht.setVisible(true);
			lbNachricht.setText(strNachrichtentext);
			lbNachricht.setForeground(getForeground());
		}
		else
		{
			lbNachricht.setVisible(false);
		}
			
		bAktiviert = true;
		
		setVisible(true);
		
		setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
		mbehandleAWTEventListener();
		
		requestFocusInWindow();		
		
	}

	/**
	 * Macht das Fenster wieder benutzbar
	 */
	public void mDeaktiviereGlasPane()
	{
		bAktiviert = false;
		mbehandleAWTEventListener();
		setCursor(null);
		setVisible(false);
	}
	
	/**
	 * Diese Klasse des AWTEventListeners enthält nur eine Methode, die sämtliche Eingaben über
	 * Tastatur ins Nirvana leitet.
	 */
	public class GlassPaneTastaturListener implements AWTEventListener
	{
		public void eventDispatched(AWTEvent event)
		{
			if (event instanceof KeyEvent)
			{
				((KeyEvent) event).consume();
			}			
		}		
	}
}

Wenn ich die Methoden mAktiviereGlasPane(String p_Nachrichtentext) oder mDeaktiviereGlasPane() aber benutze, werden diese nicht oder nur unvollständig ausgeführt.

Ich denke, daß liegt daran, daß der Grafik-Thread seine Aufgabe irgendwie nicht komplett abarbeitet.

Hier ein kleines Testprogramm, welches die obrige Klasse verwendet:
Java:
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;


public class MainProg
{
	JFrame f;
	JButton b1;
	JButton b2;
	HKGlassPane glas;
	JMenuBar menuBar;
	JMenu menu;
	JMenuItem menuItem;
	ListenerButtons lb;
	
	public static void main(String[] args)
	{
		MainProg x = new MainProg();

	}
	
	public MainProg()
	{
		f = new JFrame("Test Glasspane");
		glas = new HKGlassPane();
		
		f.setGlassPane(glas);	
		
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		f.setLayout(new GridLayout(1, 2));
		f.setPreferredSize(new Dimension(400, 300));
		
		menuBar = new JMenuBar();
        menu = new JMenu("Menu");
        menuItem = new JMenuItem("Do nothing");
        menu.add(menuItem);
        
       
        menuBar.add(menu);
        f.setJMenuBar(menuBar);

		
		b1 = new JButton("Test 01");
		b2 = new JButton("Test 02");
		
		lb = new ListenerButtons(this);
		
		b1.addActionListener(lb);
		b2.addActionListener(lb);
		menuItem.addActionListener(lb);
		
		f.add(b1);
		f.add(b2);		
				
		f.pack();
		f.setVisible(true);
		
	}
	
	
		
	public class ListenerButtons implements ActionListener
	{

		HKGlassPane gp;
		MainProg M;
		
		public ListenerButtons(MainProg p_M)
		{
			gp = p_M.glas;
			M = p_M;
		}
		@Override
		public void actionPerformed(ActionEvent e)
		{
			if(e.getSource() == b1)
			{
				System.out.println("Knopf 01");
				
				gp.mAktiviereGlasPane("Bitte warten");
				
				for(Integer i = 0; i < 999999999; i++);
				{
					System.out.println("Was zum Arbeiten.");
					
				}
				
				gp.mDeaktiviereGlasPane();
			}
			
			if(e.getSource() == b2)
			{
				System.out.println("Knopf 02");
							
			}
			
			if(e.getSource() == M.menuItem)
			{
				System.out.println("Menü");
				
				gp.mAktiviereGlasPane("Bitte warten");
								
				for(Integer i = 0; i < 999999999; i++);
				{
					System.out.println("Was zum Arbeiten.");
					
				}
				
				gp.mDeaktiviereGlasPane();
			}
			
		}
		
		
	}

}

Wie kriege ich das Programm dazu, das Fenster zuerst zu sperren und erst dann die Berechnung durchzuführen?
Ich habe schon mit invokeLater() und invokeAndWait() herumexperimentiert, aber bin zu keinem brauchbaren Ergebnis gekommen.

Eigendlich wollte ich mit dem Sperren/Entsperren des Fensters verhindern, daß ich komplizierte Threat-Geschichten machen muß.

Weiß vielleicht einer von euch eine Lösung?
Evtl. eine SwingWorker-Sache?

MfG
hansmueller
 

Michael...

Top Contributor
Deine for Schleifen (die wohl die Berechnung simulieren sollen) müssen in einen separaten Thread ausgelagert werden, dieser muss dann am Ende der Berechnung die Deaktivierung des GlasPane vornehmen oder zumindest der GUI mitteilen, dass der GlasPane wieder deaktiviert werden kann.
 

hansmueller

Bekanntes Mitglied
Danke Michael,

ich werde es dann so machen, wie du es beschrieben hast.

(In meiner Klasse HKGlassPane war ein kleiner Fehler, deshalb poste ich jetzt die korregierte Fassung, nur für den Fall, daß jemand mal sowas gebrauchen kann.)

HKGlassPane:
Java:
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import javax.swing.border.*;

/**
 *  <p>HKGlassPane</p>
 *  Eine HilfsKlasse, die dafür sorgen soll, daß das Hauptfenster nicht mehr
 *  bedient werden kann, wenn eine rechenintensive Aktion ausgeführt wird.
 *
 *  
 *  @author hansmueller
 *  
 */
public class HKGlassPane extends JComponent
{
	Border borderNachrichtenRahmen;
	
	JLabel lbNachricht;
	Color colNachrichtenHintergrund;
	Color colGlassPaneHintergrund;
	Color colGrundfarbe;
	
	Boolean bAktiviert = false;
	
	GlassPaneTastaturListener gptl;
	String strNachrichtentext;
	
	public HKGlassPane()
	{
		lbNachricht = new JLabel();//Wichtig, damit es zu keiner Nullpoint-Ecxeption beim setBackground kommt.
		
		setOpaque(false);
		colGrundfarbe = UIManager.getColor("inactiveCaptionBorder");
		
		colGlassPaneHintergrund = new Color(colGrundfarbe.getRed(), colGrundfarbe.getGreen(), colGrundfarbe.getBlue(), 128);
		
		setBackground(colGlassPaneHintergrund);
		setLayout(new GridBagLayout());

		//Das Nachrichten-JLabel:
		
		add(lbNachricht, new GridBagConstraints());
		lbNachricht.setOpaque(true);
		borderNachrichtenRahmen = new EmptyBorder(10, 10, 10, 10);
		lbNachricht.setBorder(borderNachrichtenRahmen);

		//Maus-, Tastatur- und Fokus-Events müssen abgefangen werden.

		addMouseListener(new MouseAdapter(){});
		addMouseMotionListener(new MouseMotionAdapter(){});

		gptl = new GlassPaneTastaturListener();

		setFocusTraversalKeysEnabled(false);
	}

	/**
	 * Die HKGlassPane ist zwar transparent, aber um dem Fenster ein "gesperrtes" Aussehen
	 * zu geben, muß der Hintergrund gezeichnet werden.
	 */
	@Override
	protected void paintComponent(Graphics g)
	{
		g.setColor(getBackground());
		g.fillRect(0, 0, getSize().width, getSize().height);
	}

	/**
	 * Die Hintergrundfarbe des Nachrichten-JLabels ist die selbe wie beim GlassPane,
	 * jedoch ohne den Alpha-Kanal. (Dadurch wird es nicht transparent).
	 */
	@Override
	public void setBackground(Color c)
	{
		super.setBackground(c);

		colNachrichtenHintergrund = new Color(c.getRGB());
		//System.out.println(c.toString());
		lbNachricht.setBackground(colNachrichtenHintergrund);
	}
	
	/**
	 * Diese Methode ist dafür zuständig die Tastatur zu blockieren und wieder freizugeben.
	 */
	public void mbehandleAWTEventListener()
	{
		if(bAktiviert)
		{
			Toolkit.getDefaultToolkit().addAWTEventListener(gptl, AWTEvent.KEY_EVENT_MASK);
			/*Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener()
			{
				public void eventDispatched(AWTEvent e)
				{
					if (e instanceof KeyEvent)
					{
						((KeyEvent) e).consume();
					}
				}
			}, AWTEvent.KEY_EVENT_MASK);*/
		}
		else
		{
			Toolkit.getDefaultToolkit().removeAWTEventListener(gptl);
		}
	}

	/**
	 * Macht das Fenster unbenutzbar und verändert den Mauszeiger in eine Sanduhr.
	 * @param p_Nachrichtentext Der Text wird mittig im Fenster angezeigt.
	 * 
	 */
	public void mAktiviereGlasPane(String p_Nachrichtentext)
	{	
		strNachrichtentext = p_Nachrichtentext;
				
		if (strNachrichtentext != null && strNachrichtentext.length() > 0)
		{			
			lbNachricht.setVisible(true);
			lbNachricht.setText(strNachrichtentext);
			lbNachricht.setForeground(getForeground());
		}
		else
		{
			lbNachricht.setVisible(false);
		}
			
		bAktiviert = true;
		
		setVisible(true);
		
		setCursor(Cursor.getPredefinedCursor(Cursor.WAIT_CURSOR));
		requestFocusInWindow();	
		mbehandleAWTEventListener();		
	}

	/**
	 * Macht das Fenster wieder benutzbar
	 */
	public void mDeaktiviereGlasPane()
	{
		bAktiviert = false;
		mbehandleAWTEventListener();
		setCursor(null);
		setVisible(false);
	}
	
	/**
	 * Diese Klasse des AWTEventListeners enthält nur eine Methode, die sämtliche Eingaben über
	 * Tastatur ins Nirvana leitet.
	 */
	public class GlassPaneTastaturListener implements AWTEventListener
	{
		public void eventDispatched(AWTEvent event)
		{
			if (event instanceof KeyEvent)
			{
				((KeyEvent) event).consume();
			}			
		}		
	}
}

MainProg:
Java:
import java.awt.Dimension;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;

public class MainProg
{
	JFrame f;
	JButton b1;
	JButton b2;
	HKGlassPane glas;
	JMenuBar menuBar;
	JMenu menu;
	JMenuItem menuItem;
	ListenerButtons lb;
	
	public static void main(String[] args)
	{
		MainProg x = new MainProg();
	}
	
	public MainProg()
	{
		f = new JFrame("Test Glasspane");
		glas = new HKGlassPane();
		
		f.setGlassPane(glas);	
		
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		
		f.setLayout(new GridLayout(1, 2));
		f.setPreferredSize(new Dimension(400, 300));
		
		menuBar = new JMenuBar();
        menu = new JMenu("Menu");
        menuItem = new JMenuItem("Do nothing");
        menu.add(menuItem);
        
       
        menuBar.add(menu);
        f.setJMenuBar(menuBar);

		
		b1 = new JButton("Test 01");
		b2 = new JButton("Test 02");
		
		lb = new ListenerButtons(this);
		
		b1.addActionListener(lb);
		b2.addActionListener(lb);
		menuItem.addActionListener(lb);
		
		f.add(b1);
		f.add(b2);		
				
		f.pack();
		f.setVisible(true);				
	}	
		
	public class ListenerButtons implements ActionListener
	{
		HKGlassPane gp;
		MainProg M;
		
		public ListenerButtons(MainProg p_M)
		{
			gp = p_M.glas;
			M = p_M;
		}
		@Override
		public void actionPerformed(ActionEvent e)
		{
			if(e.getSource() == b1)
			{
				System.out.println("Knopf 01");
				
				gp.mAktiviereGlasPane("Bitte warten");
				
				new Thread(new Runnable()
				{
					@Override
					public void run()
					{
						for(Integer i = 0; i < 999999999; i++);
						{
							System.out.println("Was zum Arbeiten.");							
						}
						
						System.out.println("Fertig");
						gp.mDeaktiviereGlasPane();
					}
				}).start();				
			}
			
			if(e.getSource() == b2)
			{
				System.out.println("Knopf 02");							
			}
			
			if(e.getSource() == M.menuItem)
			{
				System.out.println("Menü");
				
				gp.mAktiviereGlasPane("Bitte warten");
			
				new Thread(new Runnable()
				{
					@Override
					public void run()
					{						
						for(Integer i = 0; i < 999999999; i++);
						{
							System.out.println("Was zum Arbeiten.");							
						}
						
						System.out.println("Fertig");
						gp.mDeaktiviereGlasPane();
					}
				}).start();				
			}			
		}		
	}
}

MfG
hansmueller
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
D Swing SwingUtils / Thread Problem AWT, Swing, JavaFX & SWT 3
C Thread-/ Simulations- Problem AWT, Swing, JavaFX & SWT 18
P Problem Thread.sleep() und JProgressBar AWT, Swing, JavaFX & SWT 7
Luk10 Swing Problem mit Zeichen-Thread AWT, Swing, JavaFX & SWT 8
X Problem bei JTextArea und Thread.sleep() AWT, Swing, JavaFX & SWT 8
T thread.sleep Sprung Problem AWT, Swing, JavaFX & SWT 24
A Sleep Funktion / Thread-Problem ! AWT, Swing, JavaFX & SWT 11
S Problem mit 2 Thread.sleep AWT, Swing, JavaFX & SWT 3
B ActionListener, Thread, JButton Problem AWT, Swing, JavaFX & SWT 2
T Problem mit Oberfläche und Thread AWT, Swing, JavaFX & SWT 10
U Problem mit zweitem Thread AWT, Swing, JavaFX & SWT 10
S Problem mit Thread AWT, Swing, JavaFX & SWT 9
R Thread-Problem (Aktualisierung von JLabel-Komponente) AWT, Swing, JavaFX & SWT 9
M JTextArea in JScrollPane, Problem mit Thread.sleep() AWT, Swing, JavaFX & SWT 5
C Problem beim Ausführen von Thread per Button AWT, Swing, JavaFX & SWT 2
G Problem GUI - thread AWT, Swing, JavaFX & SWT 12
F Problem mit Thread AWT, Swing, JavaFX & SWT 5
P thread nimmt veränderte boolean nicht AWT, Swing, JavaFX & SWT 7
N JFrame loescht alles, sobald der Thread zuende ist AWT, Swing, JavaFX & SWT 22
M Server/Client thread von GUI Trennen AWT, Swing, JavaFX & SWT 2
K JavaFx, Sound Aufnahme und Thread AWT, Swing, JavaFX & SWT 0
T Exception in thread "main" java.lang.NoClassDefFoundError AWT, Swing, JavaFX & SWT 4
G Exception javafx Thread -> caused by removing children while in EventHandler AWT, Swing, JavaFX & SWT 28
H Event Handling Thread - Abruf der get-Methode AWT, Swing, JavaFX & SWT 5
J "Exception in thread "AWT-EventQueue-0"" Fehler AWT, Swing, JavaFX & SWT 3
G Thread starten Swing AWT, Swing, JavaFX & SWT 5
C Thread verwalten AWT, Swing, JavaFX & SWT 2
A Swing Exception in thread "AWT-EventQueue-0" AWT, Swing, JavaFX & SWT 1
S JavaFX Exception in thread "JavaFX Application Thread" AWT, Swing, JavaFX & SWT 3
L Label im JavaFX Thread Updaten AWT, Swing, JavaFX & SWT 3
ralfb1105 JavaFX Alert Confirmation Dialog aus einem Service Thread AWT, Swing, JavaFX & SWT 8
ralfb1105 JavaFX MVC: Thread in Model Class mit Ausgabe in TextArea AWT, Swing, JavaFX & SWT 10
J Thread per Button starten AWT, Swing, JavaFX & SWT 10
J Thread kennt JButton nicht. AWT, Swing, JavaFX & SWT 11
T JavaFX Task / Thread / FXThread Komplikationen AWT, Swing, JavaFX & SWT 5
O Swing Event Dispatch Thread AWT, Swing, JavaFX & SWT 1
L JavaFX UI Thread block AWT, Swing, JavaFX & SWT 13
X Exception in thread "AWT-EventQueue-0" java.lang.ArrayIndexOutOfBoundsException: -1 AWT, Swing, JavaFX & SWT 6
sandaime Swing Thread für CMD auslesen AWT, Swing, JavaFX & SWT 16
E JavaFX JavaFX Application in Thread ausführen AWT, Swing, JavaFX & SWT 1
D JavaFX UI-Thread und DB-Thread trennen um z.B. Ladebalken anzuzeigen AWT, Swing, JavaFX & SWT 15
T JavaFX Controller im extra Thread AWT, Swing, JavaFX & SWT 0
T Swing 2 Thread.sleep parallel laufen lassen AWT, Swing, JavaFX & SWT 4
L Zweites Fenster mit Thread AWT, Swing, JavaFX & SWT 0
E JavaFX Stage.show() in ursprünglichem Thread starten AWT, Swing, JavaFX & SWT 7
L Swing Frame in Thread wird nicht gezeichnet AWT, Swing, JavaFX & SWT 2
N Programm mit Swing und Thread, Figur bewegen sich nicht AWT, Swing, JavaFX & SWT 6
C Im ActionListener Buttons disablen, einen Thread starten, dann Buttons enablen AWT, Swing, JavaFX & SWT 2
T Swing Button bleibt grau [=> UI hat sich aufgehängt, Aufgabe in Thread auslagern] AWT, Swing, JavaFX & SWT 3
M Thread-Frage in SWT AWT, Swing, JavaFX & SWT 1
Q GUI außerhalb GUI-Thread updaten - GUI friert ein AWT, Swing, JavaFX & SWT 18
C Thread in Klassen starten AWT, Swing, JavaFX & SWT 4
L exception in thread awt-eventqueue-0 java.lang.nullpointerexception AWT, Swing, JavaFX & SWT 2
S Swing Exception in thread "AWT-EventQueue-0" bei Jlabel AWT, Swing, JavaFX & SWT 4
D SWT SWT Elemente aus anderen Klassen aufrufen - Invalid thread access AWT, Swing, JavaFX & SWT 6
K JavaFX Tableview mit fxml ohne Aktualiserung trotz Thread AWT, Swing, JavaFX & SWT 13
K Event Handling 2 Buttons und Thread stop AWT, Swing, JavaFX & SWT 3
C Swing Update von swing-TableModels per Thread. Eins geht, das andere nicht, warum? AWT, Swing, JavaFX & SWT 12
V JLabel bzw. GUI aus externen Thread ansteuern AWT, Swing, JavaFX & SWT 3
J Applet Paralleles Thread Handling AWT, Swing, JavaFX & SWT 3
H Swing JfreeChart aktualisieren - mit daten aus thread AWT, Swing, JavaFX & SWT 3
T Java Swing Main GUI Thread AWT, Swing, JavaFX & SWT 3
C Event Handling Exception in thread "AWT-EventQueue-0" java.lang.ClassCastException AWT, Swing, JavaFX & SWT 43
T Table-Zeilen mit Thread einfärben AWT, Swing, JavaFX & SWT 15
F Swing GUI-Thread für automatisches Update nutzen AWT, Swing, JavaFX & SWT 10
Y KeyListener, GUI Thread, repaint AWT, Swing, JavaFX & SWT 7
V Nullpointerexception (etwas mit thread und jframe) AWT, Swing, JavaFX & SWT 3
S SWT GUI-Thread AWT, Swing, JavaFX & SWT 11
A Thread und sleep(1000); AWT, Swing, JavaFX & SWT 7
B Swing Thread+Animation AWT, Swing, JavaFX & SWT 7
S Timer oder Thread.sleep AWT, Swing, JavaFX & SWT 3
M Exception in thread "Thread-3" java.lang.NullPointerException AWT, Swing, JavaFX & SWT 18
B Über SWT Button Thread beenden AWT, Swing, JavaFX & SWT 2
C SWT Gui Thread hängt sich auf AWT, Swing, JavaFX & SWT 3
lumo SWT Exception in thread "main" org.eclipse.swt.SWTError: No more handles AWT, Swing, JavaFX & SWT 3
G 2D-Grafik Von Thread aus Zeichnen AWT, Swing, JavaFX & SWT 5
U Swing JLabel bewegen mittels Thread AWT, Swing, JavaFX & SWT 3
M JProgressBar für einen Thread AWT, Swing, JavaFX & SWT 14
R JTable und Thread AWT, Swing, JavaFX & SWT 4
K Thread.sleep in GUI AWT, Swing, JavaFX & SWT 4
J Thread funktioniert nicht AWT, Swing, JavaFX & SWT 10
D JPanel mit Thread in JPanel AWT, Swing, JavaFX & SWT 4
F Exception in thread "AWT-EventQueue-0" java.lang.NumberFormatException: null AWT, Swing, JavaFX & SWT 5
P Teil einer Swing GUI in eigenem Thread AWT, Swing, JavaFX & SWT 4
S Thread.sleep() in einer methode fürs zeichen AWT, Swing, JavaFX & SWT 3
O JTree/TreeModel/DefaultMutableTreeNodes thread safe machen AWT, Swing, JavaFX & SWT 3
P repaint während Thread läuft AWT, Swing, JavaFX & SWT 9
F SWT table refresh per Thread AWT, Swing, JavaFX & SWT 2
V Swing remove(Component) blockiert Thread sehr lange. AWT, Swing, JavaFX & SWT 6
J AWT Artefakte bei AWT-Rendering durch parallelen Thread AWT, Swing, JavaFX & SWT 4
T Event Dispatch Thread und noch ein Thread AWT, Swing, JavaFX & SWT 7
Burny91 Swing Thread mit wait() und notify() steuern AWT, Swing, JavaFX & SWT 22
N SWT - über Thread Composite erstellen und Anhängen AWT, Swing, JavaFX & SWT 6
K Vom Gui aus auf einen Thread warten AWT, Swing, JavaFX & SWT 4
F Merkwürdiges Verhalten zeichnen sperater Thread AWT, Swing, JavaFX & SWT 13
B Swing Swing und Thread.sleep() AWT, Swing, JavaFX & SWT 6
N Exception Behandlung mit setDefaultUncaughtExceptionHandler, insbesondere im EventDispatcher Thread AWT, Swing, JavaFX & SWT 4
Q Neuer Thread zum Öffnen AWT, Swing, JavaFX & SWT 2
P Swing GUI im Thread? AWT, Swing, JavaFX & SWT 5
T GUI JFrame - neuer Thread AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben