[英]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.