packageinternalFrame;importjavax.swing.JInternalFrame;importjavax.swing.JDesktopPane;importjavax.swing.JMenu;importjavax.swing.JMenuItem;importjavax.swing.JMenuBar;importjavax.swing.JFrame;importjavax.swing.KeyStroke;import java.awt.event.*;import java.awt.*;/** InternalFrameDemo.java requires:
* MyInternalFrame.java*/
public class InternalFrameDemo extendsJFrameimplementsActionListener {
JDesktopPane desktop;publicInternalFrameDemo() {super("InternalFrameDemo");//让大窗口在屏幕的每一个边缘缩进50个像素。
int inset = 50;
Dimension screenSize=Toolkit.getDefaultToolkit().getScreenSize();
setBounds(inset, inset,
screenSize.width- inset*2,
screenSize.height- inset*2);//建立GUI。
desktop = new JDesktopPane(); //定义一个桌面面板
createFrame(); //调用自定义方法,创建第一个窗体
setContentPane(desktop);
setJMenuBar(createMenuBar()); //创建菜单栏//拖放模式
desktop.setDragMode(JDesktopPane.OUTLINE_DRAG_MODE);
}protectedJMenuBar createMenuBar() {
JMenuBar menuBar= newJMenuBar();//定义并实例化菜单栏项目
JMenu menu = new JMenu("Document");
menu.setMnemonic(KeyEvent.VK_D); //定义热键
menuBar.add(menu);//创建第一个子菜单项
JMenuItem menuItem = new JMenuItem("New");
menuItem.setMnemonic(KeyEvent.VK_N);
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_N, ActionEvent.ALT_MASK));
menuItem.setActionCommand("new");
menuItem.addActionListener(this);
menu.add(menuItem);//创建第二个子菜单项
menuItem = new JMenuItem("Quit");
menuItem.setMnemonic(KeyEvent.VK_Q);
menuItem.setAccelerator(KeyStroke.getKeyStroke(
KeyEvent.VK_Q, ActionEvent.ALT_MASK));
menuItem.setActionCommand("quit");
menuItem.addActionListener(this);
menu.add(menuItem);returnmenuBar;
}//对菜单的选择操作
public voidactionPerformed(ActionEvent e) {if ("new".equals(e.getActionCommand())) { //新增
createFrame();
}else { //退出
quit();
}
}//创建一个新的内置窗体
protected voidcreateFrame() {
MyInternalFrame frame= newMyInternalFrame();
frame.setVisible(true);
desktop.add(frame);try{
frame.setSelected(true);
}catch(java.beans.PropertyVetoException e) {}
}//退出应用
protected voidquit() {
System.exit(0);
}/*** Create the GUI and show it. For thread safety,
* this method should be invoked from the
* event-dispatching thread.*/
private static voidcreateAndShowGUI() {//Make sure we have nice window decorations.
JFrame.setDefaultLookAndFeelDecorated(true);//Create and set up the window.
InternalFrameDemo frame = newInternalFrameDemo();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//Display the window.
frame.setVisible(true);
}public static voidmain(String[] args) {//Schedule a job for the event-dispatching thread://creating and showing this application's GUI.
javax.swing.SwingUtilities.invokeLater(newRunnable() {public voidrun() {
createAndShowGUI();
}
});
}
}