JFrame表现为JDialog?

时间:2013-06-14 20:07:00

标签: java swing jframe jdialog modality

我有一个简单的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);
}
}

3 个答案:

答案 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)进行对话将阻止输入到程序的其他窗口,并停止在调用者中执行,直到对话框关闭。