有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java JFrame“阻塞”显示()

我正在使用CHARVA(像Swing这样的课程),我有一个问题

因为charva与Swing非常相似,所以我认为Swing的解决方案与charva相同

我正在开发一个调用JFrame扩展类get的应用程序 它的返回代码,并根据返回代码显示其他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()


共 (2) 个答案

  1. # 1 楼答案

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

    虽然我不知道Charva,但是JFrame.show()是不推荐的,因为Java1.5(您应该使用setVisible(true)

  2. # 2 楼答案

    there is a way to have a "blocking" 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");