JVM zwingen auf das Dialogende zu warten?

flashray

Erfahrenes Mitglied
Hallo Freunde,

wie kann man eine Applikation dazu veranlassen auf das Ende eines Dialoges zu warten?
Wird im Programm ein Dialog der Klasse JOptionPane gezeigt, wird der restliche Code wie gewünscht nicht ausgeführt bis dieses geschlossen wird. Wie könnte man eben diese Funktionalität in einem eigenen Dialog einbauen?

Java:
import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.*;

public class WaitProblem extends JFrame implements ActionListener {

	private JButton btn = new JButton("Write Something");

	private MyDialog mDialog = new MyDialog();

	public WaitProblem() {
		super("Wait Problem");
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		this.setLocationByPlatform(true);
		this.setAlwaysOnTop(true);

		btn.addActionListener(this);

		this.add(btn);

		this.pack();
		this.setVisible(true);
	}

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

	public void actionPerformed(ActionEvent e) {
		String input = "";

		// JOptionPane zwingt die Methode auf ihr Ergebnis zu warten
		//input = JOptionPane.showInputDialog(this,"Write your message please!");

		// Eigener Dialog, hier fährt die Methode einfacht fort, mit den nächsten Zeilen
		input = mDialog.showDialog();

		System.out.println(input);
		JOptionPane.showMessageDialog(this, "Your message was this:\n" + input);

	}

	class MyDialog extends JDialog implements ActionListener {
		private JTextField tf = new JTextField();

		private JButton btn = new JButton("OK");

		public MyDialog() {
			this.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
			this.setLocationByPlatform(true);
			this.setSize(320, 480);

			btn.addActionListener(this);

			this.add(tf, BorderLayout.CENTER);
			this.add(btn, BorderLayout.SOUTH);
			this.pack();
		}

		public String showDialog() {
			this.setVisible(true);
			return tf.getText();
		}

		public void actionPerformed(ActionEvent e) {
			this.dispose();
		}
	}
}


Vg Erdal
 
Zuletzt bearbeitet:
Hallo Tobias,

Hatte es schon mit Runnable und Thread und SwingUtilities etc. erfolglos versucht. Hab wohl auf der falschen Fährte gesucht.

Dankeschön.

Vg Erdal
 
Zurück