我正在使用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);
}
答案 0 :(得分:1)
我可以想到两种方式。
第一种是在创建帧时引发标志。这里的问题是,您需要监视帧何时关闭,这会增加额外的开销。
第二种方法是使用`JDesktopPane#getAllFrames'检查当前在桌面上打开的框架实例的所有框架。
从那里你只需循环结果,做一个instanceof
比较标题(例如),如果你没有找到任何,创建它们,否则你可以使用JDesktopPane.selectFrame
来突出它
答案 1 :(得分:0)
将以下代码放在代码之前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;
}
}