我正在使用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()
?
答案 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");