我有一个相当复杂的 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/