Java 图形用户界面 : Instantiating a complex pop-up window's components each time it's opened vs storing them

标签 java swing user-interface awt jdialog

我有一个相当复杂的 JDialog 窗口,可以使用按钮打开它,并强制用户在继续之前关闭它。它是模拟的序列创建器,因此不应过于频繁地打开。 (JDialog 窗口本身包含大约 15 个标签、10 个按钮、10 个复选框、几个文本字段、一个列表和一个表格。800x400)

哪种做法更好,是在后台准备好主面板及其组件,还是实例化它并通过构造函数构建将在窗口关闭时销毁的面板?

最佳答案

似乎 Java 对于各种事物都有自己的内部缓存(也适用于新组件的产生)。看看这个:

    public class Test {

      public static void main(String[] args) {

        long l11 = System.currentTimeMillis();
        new JDialog();
        long l12 = System.currentTimeMillis();

        long l21 = System.currentTimeMillis();
        new JDialog();
        long l22 = System.currentTimeMillis();

        System.out.println("dialog 1: " + (l12 - l11) + " ms");
        System.out.println("dialog 2: " + (l22 - l21) + " ms");
      }
    }

输出:

    dialog 1: 54 ms
    dialog 2: 1 ms

您可以将 new JDialog(); 替换为任何其他 swing 组件(或多个),甚至是您创建的自定义组件,您也会得到类似的结果。

考虑到您还必须重置面板/组件,因此最好从一个全新的(新的)面板/组件开始。这也将消除维护该面板时所有可能的错误/错误。

关于Java 图形用户界面 : Instantiating a complex pop-up window's components each time it's opened vs storing them,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25721915/

相关文章:

java - 用于测量相似性的 FFT 图像

java - 所有节点聚集在一处 - GraphStream - JAVA

java swing 两个按钮通信

java - 如何在继续之前等待 JFrame 关闭?

java - 使子元素可点击的整个 View

java - 性能工程 : Inconsistent results in measuring turnaround time

JAVA按n执行线程栈

java - Hadoop FileSystem.mkdirs(path, permission) 忽略权限

java - NetBeans GUI Builder - 将整个图像目录添加到另一个特定目录,以便将图像导入到那里

windows - 如何构建用户友好的过滤器