繁体   English   中英

JFrame“阻塞”显示()

[英]JFrame "blocking" show()

我正在使用 CHARVA(类似 ncurses 的 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()吗?

如果您想执行阻塞调用,您可以尝试使用模态JDialog而不是JFrame :只需在其构造函数中为modal参数使用true (请参阅JDialog

虽然,我不知道 Charva,但JFrame.show()自 Java 1.5 起已被弃用(您应改用setVisible(true) )。

有没有办法进行“阻塞”show()?

是的。 您可以让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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM