JFrame"阻止"节目()

时间:2014-04-02 20:46:35

标签: java swing modal-dialog jframe modality

我正在使用CHARVA(ncurses-like Swing),我遇到了问题。

因为charva与Swing非常相似,我认为Swing的解决方案与charva相同。

我正在开发一个调用JFrame扩展类的应用程序 它的返回码并根据返回码显示其他JFrame窗口。

就像:

public static void main() {
MainFrame mainframe=new MainFrame();
mainframe.show();
switch (mainframe.returncode) {
       case "generalsetting": Frame1 frame1=new Frame1;
       frame1.show();
       break;
       case "usersetting": Frame2 frame2=new Frame2;
       frame2.show();
       break;

等。但是当我这样做时:

mainframe.show();

程序不会等到主机关闭/隐藏,但继续“切换”,返回代码未初始化并导致程序崩溃。

有一种方法可以“阻止”show()

2 个答案:

答案 0 :(得分:4)

如果您要执行阻止调用,可以尝试使用模式JDialog而不是JFrame:只需在其构造函数中使用true modal参数(见JDialog

虽然,我不知道Charva,但自Java 1.5以来JFrame.show()已被弃用(您将使用setVisible(true)代替)。

答案 1 :(得分:3)

  

有一种方法可以阻止"阻止"显示()?

是。您可以MainFrame扩展JDialog而不是JFrame并将其设为模态:

class MainFrame extends JDialog {
    //code...
}

System.out.println("Before");
MainFrame d = new JDialog();
d.setModal(true);
d.setVisible(true);
System.out.println("After");