2

我正在使用 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()

4

2 回答 2

4

如果要执行阻塞调用,可以尝试使用模式JDialog而不是JFrame: 只需在其构造函数中使用truefor参数(请参阅JDialogmodal

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

于 2014-04-02T20:53:04.340 回答
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");
于 2014-04-02T20:54:12.927 回答