2017年計算機二級考試java章節(jié)輔導(dǎo):JMenuBar 菜單

字號:


    8.5.1 JMenuBar 菜單
    菜單的組織方式為:一個菜單條 (JMenuBar)中可以包含多個菜單(JMenu),一個菜單中可以包含多個菜單項(JMenuItem及其子類)。有一些支持菜單的組件,如JFrame、JDialog以及JApplet,都有一個setMenuBar(JMenuBar bar)方法,可以利用這個方法來設(shè)置菜單條。
    菜單項是菜單系統(tǒng)中最基本的組件,用戶與菜單的交互主要是菜單項的交互,因此事件處理也是針對菜單項的。當(dāng)用戶選擇了某個菜單項,就會觸發(fā)一個ActionEvent事件,可以編寫相應(yīng)的類實現(xiàn)ActionListener接口對該事件進(jìn)行處理。
    例8-8演示了如何創(chuàng)建一個完整的菜單系統(tǒng),可以通過點擊菜單項讓菜單項做出反應(yīng)。
    import java.awt.*;
    import javax.swing.*;
    import java.awt.event.*;
    class JMenuBarTest extends JFrame{
    private JMenuBar bar = new JMenuBar();
    private JMenu menuFile = new JMenu("文件");
    private JMenuItem itemFile1 = new JMenuItem("新建");
    private JMenuItem itemFile2 = new JMenuItem("打開");
    private JMenuItem itemFile3 = new JMenuItem("保存");
    private JMenuItem itemFile4 = new JMenuItem("退出");
    private JMenu menuHelp = new JMenu("幫助");
    private JMenuItem itemHelp1 = new JMenuItem("幫助主題");
    private JMenuItem itemHelp2 = new JMenuItem("關(guān)于記事本");
    private JTextArea ta = new JTextArea(10,30);
    public JMenuBarTest(String title){
    super(title);
    //設(shè)置快捷鍵
    itemFile1.setAccelerator(KeyStroke.getKeyStroke('N',KeyEvent.CTRL_MASK));
    itemFile2.setAccelerator(KeyStroke.getKeyStroke('O',KeyEvent.CTRL_MASK));
    itemFile3.setAccelerator(KeyStroke.getKeyStroke('S',KeyEvent.CTRL_MASK));
    itemFile4.setAccelerator(KeyStroke.getKeyStroke('E',KeyEvent.CTRL_MASK));
    //添加JMenuItem到JMenu
    menuFile.add(itemFile1);
    menuFile.add(itemFile2);
    menuFile.add(itemFile3);
    menuFile.addSeparator();//加分割線
    menuFile.add(itemFile4);
    menuHelp.add(itemHelp1);
    menuHelp.addSeparator();//加分割線
    menuHelp.add(itemHelp2);
    //添加JMenu到JBar
    this.setJMenuBar(bar);
    bar.add(menuFile);
    bar.add(menuHelp);
    Container contentPane = this.getContentPane();
    contentPane.add(ta);
    pack();
    this.setVisible(true);
    //注冊監(jiān)聽器
    itemFile1.addActionListener(new MyActionListener());
    itemFile2.addActionListener(new MyActionListener());
    itemFile3.addActionListener(new MyActionListener());
    itemFile4.addActionListener(new MyActionListener());
    itemHelp1.addActionListener(new MyActionListener());
    itemHelp2.addActionListener(new MyActionListener());
    this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    }
    private class MyActionListener implements ActionListener{
    public void actionPerformed(ActionEvent e) {
    ta.setText("您按下了菜單項:"+e.getActionCommand());
    }
    }
    }
    public class Test8_8 {
    public static void main(String[] args) {
    new JMenuBarTest("記事本");
    }
    }