0

我正在开发一个带有 MDI 应用程序表单的 java 应用程序。我已分配菜单项来打开两个内部子窗体。当我重复单击它们时,它们会为每次单击创建实例,我如何才能停止此操作并在第一次单击时显示先前实例化的表单。

这是我正在使用的菜单项的动作侦听器的代码,

private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        RecognitionForm recForm=new RecognitionForm();
        desktopPane.add(recForm);
        recForm.setVisible(true);

}
4

2 回答 2

1

我可以想到两种方法。

第一个是在创建框架时升旗。这里的问题是您需要监视帧何时关闭,这会增加额外的开销。

第二个是使用`JDesktopPane#getAllFrames'检查当前在桌面上打开的所有框架以获取框架实例。

从那里你可以简单地遍历结果,或者instanceof比较标题(例如),如果你没有找到,创建它们,否则你可以JDesktopPane.selectFrame用来突出显示它

于 2012-10-18T09:00:10.793 回答
0
  1. 给你所有的 MDI 子内部框架一个不同的名字
  2. 将以下代码放在您的代码 RecognitionForm recForm=new RecognitionForm();

    //start code
    javax.swing.JInternalFrame[] frames = jDPane1.getAllFrames();
    for (int i = 0; i < frames.length; i++) {
        javax.swing.JInternalFrame f = frames[i];
        if (f.getName() == "yourInternalFramename") {
            return;
        }
    }
    
于 2016-01-29T07:27:05.427 回答