我有一个简单的JDialog与JOptionPane,它工作正常。但我想使用JFrame并创建更复杂的窗口,但我希望它充当JDialog,这意味着我需要在JFrame或JDialog打开时暂停代码,因为后续步骤取决于窗口中选择的内容。
这是我的类,无论如何都要运行它以便它停止我的代码
public class MyFrame extends JDialog{
private static final long serialVersionUID = 1L;
public MyFrame() throws IOException {
setSize(600, 450);
dialogInit();
setTitle("Travel");
setVisible(true);
URL url = this.getClass().getResource("/images/travel1.png");
BufferedImage bf = ImageIO.read(url);
this.setContentPane(new backImage(bf));
JButton b = new JButton("Send");
JCheckBox tf=new JCheckBox("Country");
b.setBounds(318, 143, 98, 27);
tf.setBounds(235, 104, 150, 27);
add(b);
add(tf);
}
}
答案 0 :(得分:3)
您想要的对话是modal。使用Dialog.setModal(boolean)
:
public MyFrame() throws IOException {
setModal(true);
然后当您从构造它的代码中调用对话框上的setVisible
时,代码将一直等到对话框关闭。
答案 1 :(得分:0)
您可以让您的框架手动运行事件泵直到它关闭。请参阅this question。
答案 2 :(得分:0)
在你的代码中,你仍然在制作一个JDialog MyFrame extends JDialog
,这是你可能想要的而不是JFrame。另外你需要做的就是模态化。
通过适当的constructor或使用setModal(true)进行对话将阻止输入到程序的其他窗口,并停止在调用者中执行,直到对话框关闭。