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打开后,按菜单不会重复打开新的窗体?
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打开后,按菜单不会重复打开新的窗体?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货