通过处理旧的重启应用程序

vsa*_*nov 1 java swing

美好的一天,我正在寻找一种重新启动我的应用程序的方法,我提出了一个概念:

submit.addActionListener(new ActionListener() {

            public void actionPerformed(ActionEvent event) {

              new Application();
              dispose();


            }
        });
Run Code Online (Sandbox Code Playgroud)

处理的对象是正在创建的新对象.我的问题是,它是否是重启应用程序的好方法?为什么不?还有更好的方法吗?

PS如果存在类似的问题我真的找不到它.

Hov*_*els 5

我的问题是,它是否是重启应用程序的好方法?

不,这不对.

为什么不?

没有保留以前的信息,您需要不必要地重复读取资源,并且您可能会通过向其抛出多个不必要的创建窗口来激怒用户.

另外,问问自己,您使用的专业应用程序有多少.如果您需要处理不同的文字处理文档,MS Word是否关闭并重新启动?如果您需要阅读新的电子表格,Excel是否会这样做?

还有更好的方法吗?

是的,为程序中的所有相关类提供一个reset()方法,该方法将类和GUI组件的所有字段重置为其原始状态,并在类包含的所有组成对象上调用相同的方法,以便reset()对主类的调用将导致级联调用所有子对象.如何编码将完全取决于您的程序的细节.

如果您的GUI是根据明确的MVC设计模式构建的,那么通常控制对象将调用reset()主模型对象,然后GUI(视图)将对模型状态的变化做出反应.