如何防止netbeans中的多个MDI子窗体实例

时间:2012-10-18 08:49:09

标签: java swing netbeans mdi jmenuitem

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

这是菜单项im using

的动作监听器的代码
private void jMenuItem1ActionPerformed(java.awt.event.ActionEvent evt) {
        // TODO add your handling code here:
        RecognitionForm recForm=new RecognitionForm();
        desktopPane.add(recForm);
        recForm.setVisible(true);

}

2 个答案:

答案 0 :(得分:1)

我可以想到两种方式。

第一种是在创建帧时引发标志。这里的问题是,您需要监视帧何时关闭,这会增加额外的开销。

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

从那里你只需循环结果,做一个instanceof比较标题(例如),如果你没有找到任何,创建它们,否则你可以使用JDesktopPane.selectFrame来突出它

答案 1 :(得分: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;
        }
    }