我是 javax.swing.*
包的新手,只熟悉 c#.net。
我有两个 JFrame,分别是 frmLogin
和 frmMain
。
我想要做的只是一个像这样的简单代码:
+----- C# 版本 ----------
this.hide();
new frmMain().ShowDialog();
this.show();
tbPsswrd.Text = String.empty;
+---- JAVA版本--------
this.setVisible(false);
new frmMain().setVisible(true);
this.setVisible(true);
tbPsswrd.Text = "";
+----------------------------
在 Java JFrame 中,只有 show()
和 setVisible(boolean isVisible)
可用,
因此即使我没有完成 frmMain()
,它也会继续执行
旁边的其余代码(显示父表单并清空密码
框)。
总而言之,我想要方法 .showDialog();
的等效功能,而不仅仅是 .show();
这样它就不会继续执行下一个代码,除非我关闭子表单。
提前致谢! ü
最佳答案
使用模态 JDialog
而不是 JFrame
并且 dialog.setVisible(true)
将阻塞直到对话框关闭。例如:
JDialog dialog = new JDialog(parentFrame, true); // parent, isModal
dialog.setVisible(true); // blocks until dialog is closed
// ... do stuff after dialog is closed
关于Java 父子 JFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16952851/