package inf;import java.awt.BorderLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JDesktopPane;
import javax.swing.JFrame;
import javax.swing.JInternalFrame;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;public class infFrame { private JFrame frame; /**
 * Launch the application
 * @param args
 */
public static void main(String args[]) {
try {
infFrame window = new infFrame();
window.frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
} /**
 * Create the application
 */
public infFrame() {
initialize();
} /**
 * Initialize the contents of the frame
 */
private void initialize() {
frame = new JFrame();
frame.setBounds(100, 100, 500, 375);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); final JDesktopPane desktopPane = new JDesktopPane();
frame.getContentPane().add(desktopPane, BorderLayout.CENTER); final JMenuBar menuBar = new JMenuBar();
frame.setJMenuBar(menuBar); final JMenu menu = new JMenu();
menu.setText("New SubMenu");
menuBar.add(menu); final JMenuItem newItemMenuItem = new JMenuItem();
newItemMenuItem.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent arg0) {
final JInternalFrame internalFrame = new JInternalFrame("窗体1",true,true,true,true);
internalFrame.setVisible(true);
internalFrame.setBounds(123, 61, 157, 158);
desktopPane.add(internalFrame);
}
});
newItemMenuItem.setText("窗体1");
menu.add(newItemMenuItem); final JMenuItem newItemMenuItem_1 = new JMenuItem();
newItemMenuItem_1.addActionListener(new ActionListener() {
public void actionPerformed(final ActionEvent e) {
final JInternalFrame internalFrame = new JInternalFrame("窗体2",true,true,true,true);
internalFrame.setVisible(true);
internalFrame.setBounds(150, 70, 157, 158);
desktopPane.add(internalFrame);
}
});
newItemMenuItem_1.setText("窗体2");
menu.add(newItemMenuItem_1);
}
}
源码如上,在实际应用中,按下菜单--窗体1,会弹出窗体1,按下菜单--窗体2,会弹出窗体2,如果窗体1已打开,再按下菜单中的窗体1,还是会打开新的窗体1,如何实现不重复打开已存在窗体?即窗体1打开后,按菜单不会重复打开新的窗体?