1、记事本文本面板
import java.awt.BorderLayout; import java.awt.Rectangle; import java.awt.Toolkit; import javax.swing.JFrame; import javax.swing.JMenuBar; import javax.swing.JScrollPane; import javax.swing.JTextArea; public class NotepadFrame extends JFrame{ private static final long serialVersionUID = -6328781535000523502L; private JScrollPane jsp; private JTextArea jta; private JMenuBar jmb; public NotepadFrame(String title) { super(title); int x, y; int width=800,height=600; x=(Toolkit.getDefaultToolkit().getScreenSize().width-width)/2; y=(Toolkit.getDefaultToolkit().getScreenSize().height-height)/2-50; this.setLayout(new BorderLayout()); this.setBounds(new Rectangle(x, y, width, height)); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.addComponent(); this.addMenuBar(); } /** * 添加组件 */ public void addComponent() { jta=new JTextArea(); jsp=new JScrollPane(jta); this.add(jsp,BorderLayout.CENTER); } /** * 添加菜单 */ public void addMenuBar() { this.jmb=new MenuBar(); this.setJMenuBar(jmb); } }
2、记事本菜单设计
import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.KeyStroke; public class MenuBar extends JMenuBar{ private static final long serialVersionUID = -1822798226977402168L; public JMenu[] mainMenu; public JMenuItem[][] subMenu; public MenuBar() { //main menu label String[] mainMenuLabel={"文件(F)","编辑(E)","格式(O)","查看(V)","帮助(H)"}; //二级菜单标签 String[][] subMenuLabel={{"新建(N)","打开(O)...","保存(S)","另存为(A)...","页面设置(U)","打印(P)","退出(X)"}, {"撤销(U)","剪切(T)","复制(C)","粘贴(P)","删除(L)","查找(F)...","替换(R)...","全选(A)","日期(D)"}, {"自动换行(W)","字体(F)","颜色(C)"}, {"状态栏(S)"},{"帮助主题(H)","关于记事本(A)..."}}; //主菜单助记符 char[] mainMenuMnem={'F','E','O','V','H'}; //二级菜单助记符 char[][] subMenuMnem={{'N','O','S','A','U','P','X'}, {'U','T','C','P','L','F','R','A','D'}, {'W','F','C'},{'S'},{'H','A'}}; //二级菜单分割线,那个二级菜单下有分隔线,则为true boolean[][] subMenuSep={{false,false,false,true,false,true,false}, {true,false,false,false,true,false,true,false,false}, {false,false,false},{false},{true,false}}; //快捷键 KeyStroke[][] subMenuKey={{KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK), KeyStroke.getKeyStroke(KeyEvent.VK_O, InputEvent.CTRL_MASK), KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK), null,null,KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK),null}, {KeyStroke.getKeyStroke(KeyEvent.VK_Z, InputEvent.CTRL_MASK), KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.CTRL_MASK), KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK), KeyStroke.getKeyStroke(KeyEvent.VK_V, InputEvent.CTRL_MASK), KeyStroke.getKeyStroke(KeyEvent.VK_DELETE, 0), KeyStroke.getKeyStroke(KeyEvent.VK_F, InputEvent.CTRL_MASK), KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_MASK), KeyStroke.getKeyStroke(KeyEvent.VK_A, InputEvent.CTRL_MASK), KeyStroke.getKeyStroke(KeyEvent.VK_F5, 0)}, {null,null,null}, {null},{null,null}}; mainMenu=new JMenu[5]; subMenu=new JMenuItem[5][]; for(int i=0;i<mainMenu.length;i++) { mainMenu[i]=new JMenu(mainMenuLabel[i]); mainMenu[i].setMnemonic(mainMenuMnem[i]); subMenu[i]=new JMenuItem[subMenuLabel[i].length]; for(int j=0;j<subMenu[i].length;j++) { subMenu[i][j]=new JMenuItem(subMenuLabel[i][j]); subMenu[i][j].setMnemonic(subMenuMnem[i][j]); mainMenu[i].add(subMenu[i][j]); if(subMenuSep[i][j]) mainMenu[i].addSeparator(); if(subMenuKey[i][j]!=null) subMenu[i][j].setAccelerator(subMenuKey[i][j]); } this.add(mainMenu[i]); } } }
3、窗体及启动
public class Demo { /** * @param args */ public static void main(String[] args) { NotepadFrame notepad=new NotepadFrame("Java版 记事本-Mr.Rong"); notepad.setVisible(true); } }