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?
Vg Erdal
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: