package com.han; import java.awt.Dimension; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.InputEvent; import java.awt.event.KeyEvent; import java.awt.image.BufferedImage; import java.io.IOException; import java.net.URL; import javax.imageio.ImageIO; import javax.swing.ButtonGroup; import javax.swing.ImageIcon; import javax.swing.JCheckBoxMenuItem; import javax.swing.JFrame; import javax.swing.JMenu; import javax.swing.JMenuBar; import javax.swing.JMenuItem; import javax.swing.JRadioButtonMenuItem; import javax.swing.KeyStroke; public class JMenu_2 extends JFrame { /** * */ private static final long serialVersionUID = 1395124747782445698L; static Dimension dimension; public JMenu_2() { super(); // TODO Auto-generated constructor stub JMenuBar menuBar = new JMenuBar(); setJMenuBar(menuBar); JMenu fileMenu = new JMenu("文件(F)"); fileMenu.setMnemonic('F'); menuBar.add(fileMenu); JMenuItem newItem = new JMenuItem("新建(N)"); newItem.setMnemonic('N'); newItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK)); fileMenu.add(newItem); newItem.addActionListener(new newItemListener()); JMenu openMenu = new JMenu("打开(O)"); JMenuItem openMenuItem = new JMenuItem("未打开过的(N)"); JMenuItem openMenuItem2 = new JMenuItem("刚打开过的(C)"); fileMenu.add(openMenu); openMenu.add(openMenuItem); openMenu.add(openMenuItem2); openMenu.setMnemonic('O'); openMenuItem.setMnemonic('N'); openMenuItem2.setMnemonic('C'); openMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, InputEvent.CTRL_MASK | InputEvent.ALT_MASK)); openMenuItem2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK | InputEvent.ALT_MASK)); openMenuItem.addActionListener(new openMenuItemListener()); openMenuItem2.addActionListener(new openMenuItem2Listener()); fileMenu.addSeparator(); openMenuItem2.setEnabled(false); JMenuItem saveMenuItem = new JMenuItem("保存(S)"); saveMenuItem.setMnemonic('S'); saveMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK)); fileMenu.add(saveMenuItem); saveMenuItem.addActionListener(new saveMenuItemListener()); fileMenu.addSeparator(); JMenuItem exitMenuItem = new JMenuItem("退出(E)"); exitMenuItem.setMnemonic('E'); exitMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_MASK)); fileMenu.add(exitMenuItem); exitMenuItem.addActionListener(new exitMenuItemListener()); JMenu editMenu = new JMenu("编辑(E)"); editMenu.setMnemonic('E'); menuBar.add(editMenu); JMenuItem cutMenuItem = new JMenuItem("剪切(T)"); cutMenuItem.setMnemonic('T'); cutMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.CTRL_MASK)); editMenu.add(cutMenuItem); cutMenuItem.addActionListener(new cutMenuItemListener()); JMenuItem copyMenuItem = new JMenuItem("复制(C)"); copyMenuItem.setMnemonic('C'); copyMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK)); editMenu.add(copyMenuItem); copyMenuItem.addActionListener(new copyMenuItemListener()); URL resource = this.getClass().getResource("/images/Luxun.jpg"); BufferedImage imageScaled = null; BufferedImage in; try { in = ImageIO.read(resource); imageScaled = ImageScale.scale(in, 0.05, 0.05, 1); } catch (IOException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } ImageIcon imageIcon = new ImageIcon(imageScaled); copyMenuItem.setIcon(imageIcon); JMenuItem pasteMenuItem = new JMenuItem("粘贴(P)"); pasteMenuItem.setMnemonic('P'); pasteMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.CTRL_MASK)); editMenu.add(pasteMenuItem); pasteMenuItem.addActionListener(new pasteMenuItemListener()); editMenu.addSeparator(); JMenu fontMenu = new JMenu("字体(F)"); JCheckBoxMenuItem fontMenuItem = new JCheckBoxMenuItem("加粗(B)"); JCheckBoxMenuItem fontMenuItem2 = new JCheckBoxMenuItem("斜体(I)"); /*ButtonGroup buttonGroup2 = new ButtonGroup(); buttonGroup2.add(fontMenuItem); buttonGroup2.add(fontMenuItem2);*/ editMenu.add(fontMenu); fontMenu.add(fontMenuItem); fontMenu.add(fontMenuItem2); fontMenu.setMnemonic('F'); fontMenuItem.setMnemonic('B'); fontMenuItem2.setMnemonic('I'); fontMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_B, InputEvent.CTRL_MASK | InputEvent.ALT_MASK)); fontMenuItem2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_I, InputEvent.CTRL_MASK | InputEvent.ALT_MASK)); fontMenuItem.addActionListener(new fontMenuItemListener()); fontMenuItem2.addActionListener(new fontMenuItem2Listener()); editMenu.addSeparator(); JMenu attributeMenu = new JMenu("属性(A)"); JRadioButtonMenuItem attributeMenuItem = new JRadioButtonMenuItem( "只读(R)"); JRadioButtonMenuItem attributeMenuItem2 = new JRadioButtonMenuItem( "编辑(E)"); ButtonGroup buttonGroup = new ButtonGroup(); buttonGroup.add(attributeMenuItem); buttonGroup.add(attributeMenuItem2); editMenu.add(attributeMenu); attributeMenu.add(attributeMenuItem); attributeMenu.add(attributeMenuItem2); attributeMenu.setMnemonic('A'); attributeMenuItem.setMnemonic('R'); attributeMenuItem2.setMnemonic('E'); attributeMenuItem.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_R, InputEvent.CTRL_MASK | InputEvent.ALT_MASK)); attributeMenuItem2.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_E, InputEvent.CTRL_MASK | InputEvent.ALT_MASK)); attributeMenuItem.addActionListener(new attributeMenuItemListener()); attributeMenuItem2.addActionListener(new attributeMenuItem2Listener()); JMenu helpMenu = new JMenu("帮助(H)"); helpMenu.setMnemonic('H'); menuBar.add(helpMenu); dimension = menuBar.getPreferredSize(); System.out.println(dimension.width + "\t" + dimension.height); } // action listener procession private class newItemListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } } private class openMenuItemListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } } private class openMenuItem2Listener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } } private class saveMenuItemListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } } private class exitMenuItemListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } } private class cutMenuItemListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } } private class copyMenuItemListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } } private class pasteMenuItemListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } } private class fontMenuItemListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } } private class fontMenuItem2Listener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } } private class attributeMenuItemListener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } } private class attributeMenuItem2Listener implements ActionListener { @Override public void actionPerformed(ActionEvent e) { // TODO Auto-generated method stub } } public static void main(String[] args) { JMenu_2 frame = new JMenu_2(); frame.setTitle("订制个性化菜单"); frame.setVisible(true); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Rectangle rectangle = new Rectangle(100, 100, dimension.width + 300, dimension.width + 100); frame.setBounds(rectangle); } }