Hauptthread anhalten / Unterschied zwischen Main-Thread und dialogelement-Thread

Status
Nicht offen für weitere Antworten.

goeoe

Neues Mitglied
Hallo, ich will ähnlich wie in der Klasse JOptionPane eine klasse mit statischen methoden erstellen,die es dem benutzer erlauben eingaben zu machen. Allerdings soll dazu kein fenster erstellt werden, sondern alle nötigen eingabeButtons, Textfields usw werden im Hauptfenster angezeigt, dafür soll die statische Methode nicht zuständig sein. Dazu muss ich den Haupthread anhalten. Ich hab um die theoretische Funktionsweise zu verdeutlichen mal ein möglichst kurzes Beispiel gemacht, besteht aus 2 Klassen: einmal das Hauptfenster:
Java:
package fuersForum;


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.JTextField;

public class MainWindow extends JFrame implements ActionListener {

	private JTextField field;
	private JButton okButton;
	
	public MainWindow() {
		super();
		setDefaultCloseOperation(EXIT_ON_CLOSE);
		setLayout(new GridLayout(5,5));
		setSize(200,400);
		field = new JTextField();
		add(field);
		okButton = new JButton("ok");
		add(okButton);
		
		JButton startButton = new JButton("start");
		startButton.addActionListener(this);
		add(startButton);
		setVisible(true);
	}	
	
	public void testGetString() {
		System.out.println(GetString.getString(field, okButton));
	}

	public void actionPerformed(ActionEvent e) {
		testGetString();
	}	

	public static void main(String[] args) {
		MainWindow mainWindow = new MainWindow();
		mainWindow.testGetString();
	}
}
Dann noch die Klasse mit der statischem Methode, um die es eigentlich geht:
Java:
package fuersForum;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JTextField;

public class GetString implements ActionListener {
	private static String s;
	private JTextField field;
	private static boolean sleep;
	
	public static String getString(JTextField field, JButton button) {
		new GetString(field, button);
		sleep = true;
		while (sleep) {
			try {
				Thread.sleep(100);
			} catch (InterruptedException e) {
			}
		}
		return s;
	}
	
	public GetString(JTextField field, JButton button) {
		this.field = field;
		button.addActionListener(this);
	}
	
	public void actionPerformed(ActionEvent e) {
		s = field.getText();
		sleep = false;
		((JButton) e.getSource()).removeActionListener(this);
	}
}

Das Beispiel zeigt meinen bisherigen erfolg und mein Problem: die zu testende methode wird sofort in der Main-Methode aufgerufen, da klappt auch alles wunderbar wie geplant. Rufe ich jedoch hinterher die Methode mit dem Start-Button auf, so hängt sich das ganze Programm auf. Woran liegt das? Wie unterscheiden sich dei beiden Threads? Ich will wie gesagt kein neues fenster öffnen, also bitte kommt mir nicht mit JDialog oder so was

Vielen Dank im vorraus, Florian
 
S

SlaterB

Gast
der main-Thread ist nicht der AWT-Thread, der der GUI steuert,

der AWT-Thread startet aber alle Listener, wenn darin längerfristiger Code steht, friert die GUI ein
->
aus Listenern neue Threads starten für längere Aktionen
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
x46 Threads Threads anhalten Allgemeine Java-Themen 1
B APi methode kurz anhalten Allgemeine Java-Themen 8
S Listeners anhalten Allgemeine Java-Themen 6
S Thread anhalten per Button ? Allgemeine Java-Themen 3
C Ablauf des Programms anhalten, bis.... Allgemeine Java-Themen 5
S Thread anhalten Allgemeine Java-Themen 7
brunothg ThreadPoolExecutor anhalten Allgemeine Java-Themen 4
A programm anhalten aber wie? Allgemeine Java-Themen 4
T Schleife kurzzeitig anhalten Allgemeine Java-Themen 5
TheJavaKid Programmablauf anhalten bis actionlistener ausgeführt wurde Allgemeine Java-Themen 6
A Einen Thread von einem anderen aus anhalten? Allgemeine Java-Themen 11
M Thread mit wait anhalten, wie weiterlaufenlassen? Allgemeine Java-Themen 3
S Programm kurz anhalten Allgemeine Java-Themen 3
Encera Unterschied zweier "toString"-Methoden Allgemeine Java-Themen 1
L Unterschied zwischen List und LinkedList implementierung? Allgemeine Java-Themen 15
P Unterschied Java SE und Java EE Allgemeine Java-Themen 2
J Unterschied: Polymorphie und Dynamisches Binden Allgemeine Java-Themen 8
VfL_Freak JDK installieren Unterschied zw. JDK 8_151 und 8_152 Allgemeine Java-Themen 3
F Unterschied zwischen NormalizedValue und Value Allgemeine Java-Themen 5
T Unterschied Oracle JDK 8u111 8u112 Allgemeine Java-Themen 3
W Unterschied Standalone und Applet Allgemeine Java-Themen 1
O [log4J] Unterschied SocketServer <-> SimpleSocketServer Allgemeine Java-Themen 0
A Best Practice Unterschied zwischen einer sauberen Dependency Injection und einer statischen Klasse Allgemeine Java-Themen 5
M Unterschied zwischen Win 7/2008R2 und Win8.1/2012R2? Allgemeine Java-Themen 8
M Unterschied CPU Auslastung Allgemeine Java-Themen 0
H Gibt es einen großen Unterschied zwischen Java 6 und Java 7? Allgemeine Java-Themen 3
N Unterschied Hobby-Codung und Professionelle Softwareentwicklung Allgemeine Java-Themen 5
D Unterschied Vererbung und Polymorphie? Allgemeine Java-Themen 4
G UnterSchied OpenJDK vs JDK Allgemeine Java-Themen 11
G Unterschied MyClass.class vs this Allgemeine Java-Themen 2
H Unterschied EventQueue.invoke... und thread.start() Allgemeine Java-Themen 4
Semox Unterschied bei Thread Erstellung Allgemeine Java-Themen 11
D Exakte Unterschied zwischen diesen Elementen? Allgemeine Java-Themen 5
N Unterschied zwischen "Java" und "Java mit Eclipse" Allgemeine Java-Themen 17
N Unterschied abstract interface und interface Allgemeine Java-Themen 4
Lufti Unterschied zwischen Djava.library.path und Class-Path im Manifest? Allgemeine Java-Themen 2
B Unterschied zwischen Klasse und Objekt? Allgemeine Java-Themen 8
G Unterschied Enterprise Anwendung und Web Anwendung Allgemeine Java-Themen 30
B Gibt es einen Unterschied zwischen Java 1.2 und Java 2? Allgemeine Java-Themen 7
J Unterschied zwischen "Debug" und "Run" Allgemeine Java-Themen 16
Q Unterschied der Logger Allgemeine Java-Themen 9
G Unterschied Long - Int Allgemeine Java-Themen 9
A Unterschied Scanner und Matcher Allgemeine Java-Themen 5
M Unterschied der java.exe des JDK und der JRE Allgemeine Java-Themen 15
P Unterschied zwischen Funktion und Methoden Allgemeine Java-Themen 3
K Unterschied Compilierung Eclipse 3.2 und Ant Allgemeine Java-Themen 3
O Unterschied zwischen ThreadPoolExecutor und Executor Service Allgemeine Java-Themen 7
O Unterschied zwischen Semaphoren/Lock und ExecutorService Allgemeine Java-Themen 3
V Unterschied FileOutputStream und FileWriter? Allgemeine Java-Themen 8
I Unterschied zwischen Applet und JApplet Allgemeine Java-Themen 2
B Unterschied: jar <-> konsole Allgemeine Java-Themen 9
G Unterschied abstrakte Klasse und Interface? Allgemeine Java-Themen 3
R Der Unterschied zwischen 2.1 und 2.10 Allgemeine Java-Themen 2
T abstract - interface Unterschied Allgemeine Java-Themen 22
K Unterschied Core Java / Desktop Allgemeine Java-Themen 12
P Was ist der Unterschied zwischen JSP und Servlet ? Allgemeine Java-Themen 4
J Unterschied PrintJob & PrinterJob Allgemeine Java-Themen 11
M Unterschied notify() und notifyAll() Allgemeine Java-Themen 1
N Unterschied Calendar und GregorianCalendar Allgemeine Java-Themen 9
S Unterschied zwischen notify() und notifyAll() Allgemeine Java-Themen 2
M Unterschied zwischen // und \\ Allgemeine Java-Themen 6
E Unterschied zwischen Adapterklassen und abstracten Klassen? Allgemeine Java-Themen 5
T Unterschied Dämon - Thread (läuft später auf RMI hinaus...) Allgemeine Java-Themen 6
B Unterschied: Java - Java 2 Allgemeine Java-Themen 5
B (String) und toString(), woliegt der Unterschied? Allgemeine Java-Themen 4

Ähnliche Java Themen

Neue Themen


Oben