我对 Java 编程比较陌生,可能错过了一些明显的东西,所以请耐心等待。
我正在创建一个使用带有 JDesktopPane 的 Swing API 来创建 GUI 的程序。主屏幕上有一个按钮,上面写着“新窗口”。用户单击它,一个新的 JInternalFrame 被实例化并添加到 JDesktopPane。如下,简化的方法:
protected void createNewWindow(JPanel panel) {
JInternalFrame fooFrame = new JInternalFrame();
fooFrame.setContentPane(panel);
desktop.add(fooFrame);
}
我的问题是这个。假设用户点击按钮十次。创建了十个 JInternalFrames。它们都是方法变量,因此它们具有相同的名称。
这些旧的 fooFrame 变量会发生什么?垃圾收集器会在任何阶段来销毁它们吗?我不会想到任何东西仍然持有对他们的引用。有什么方法可以访问这些旧的 fooFrames 吗?假设我想在十个 fooFrames 中的第四个上更改 JPanel 上的文本颜色。有什么办法可以做到这一点?
我知道这是一种非常愚蠢的做事方式,只需创建一个 JInternalFrame 实例变量(可能是一个数组)即可在方法中实例化并添加到 JDesktopPane 中,这很简单。我的问题更多是出于好奇。