erstes Frame wartet auf die Auswertung eines zweiten

mrbela

Bekanntes Mitglied
Hey Leute,

mein Programm sieht wie folgt aus:

Java:
public ArrayList<Sentence> analyse() throws IOException {
	
		String s = readFile(file);
		
		new AnalyserTextSelector(file.getName(), readFile(file));

Der AnalyserTextSelector ist ein neues Frame, bei dem man aus einem großen Text eine gewisse Selektion treffen kann. Ist diese getroffen (mit Klick auf OK in diesem JFrame), so soll die Methode analyse() weiterarbeiten, und zwar mit dem String, der vorher selektiert wurde.

Wie kann man das realisieren? Rufe ich mit der Zeile

Java:
new AnalyserTextSelector(file.getName(), readFile(file));

einen neuen Thread auf? Muss der andere dann warten.

Wie funktioniert das?

Danke für die Hilfe!
 
mh, aber ein JDialog ist da auch nicht das wahre.

Es muss doch eine Lösung geben aus einem JFrame ein anderes zu öffnen und das erste so lange zu stoppen, bis das zweite wieder geschlossen ist?!?
 
Ein Dialog ist für sowas da, und kann genauso verwendet werden wie ein JFrame - nur dass er eben auch modal sein kann. Bei allem anderen wird das Threading schwierig. Welcher Thread soll dort warten? Der Event-Dispatch-Thread sicher nicht. Wer macht den Frame auf? Das müßte der EDT sein. Beschreibe ggf. mal genauer, wie das ganze ablaufen soll.
 
Der JDialog ist auch nichts weiter, als ein JFrame mit zusätzlichen sehr nützlichen Funktionen, wie zBsp. setModal();

Gruß Vanny

//Edit: to slow;(
 
Danke Euch erstmal für die Hilfe!

Hab allerdings noch ne Frage: Was beudetet modal im Zusammenhang mit JDialog? und was genau ist der Event-Dispatch-Thread?

danke!
 
Modal bedeutet eben genau, dass der aufrufende Frame so lange gestoppt wird bis der aufgerufene Dialog geschlossen wurde.
 
Ein JDialog hat zwei "Betriebsmodi" modal==true und modal==false.

In ersterem Fall wirkt der JDialog blockierend, d.h. der Thread in dem der Dialog sichtbar gemacht wird "pausiert" und ein evtl. JFrame welches als Besitzer der Dialogs registriert ist, kann nicht mehr in den Vordergrund geholt werden - solange wie der Dialog sichtbar ist.

Im zweiten Fall läuft der urspüngliche Thread auch bei sichtbarem Dialog weiter und der Anwender kann beliebig den "besitzenden" Frame und den JDialog in den Vordergrund holen.

Der EDT ist der Thread in dem Swing das gesammte Event Handling abwickelt:
Liste der standardisierten Ports ? Wikipedia
Ein blockieren dieses Threads (mit Ausnahme durch einen modalen Dialog) führt indirekt zum "Einfrieren" des GUI (nicht mehr bedienbar, graues Fenster, Artefakte...)
 

Zurück
Oben