Java程序设计 图形用户界面 【十三】菜单
菜单组件
JMenu与JMenuBar
菜单
JMenuBar组件的功能是用来摆放JMenu组件,当建立完多个JMenu组件之后,需要通过JMenuBar组件来将JMenu组件加入到窗口中
JMenuBar
JMenu
构建菜单演示:
import javax.swing.*;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class Hello {public static void main(String[] args) {JFrame frame = new JFrame("一");JTextArea text = new JTextArea();text.setEditable(true);frame.getContentPane().add(new JScrollPane(text));JMenu file = new JMenu("文件(F)");JMenuBar menuBar = new JMenuBar();menuBar.add(file);frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {super.windowClosing(e);System.exit(1);}});frame.setJMenuBar(menuBar);frame.setVisible(true);frame.setSize(300,200);frame.setLocation(500,500);}}
建立了一个JMenu,然后将JMenu的对象加入到JMenuBar中,再通过JFrame中的setJMenuBar()方法将此菜单栏加入到窗体上
JMenuItem
使用JMenuItem组件在菜单中加入菜单项
JMenuItem继承AbstractButton类,因此JMenuItem也可以理解为一种特殊的JButton组件,当选择某个菜单项时也会触发ActionEvent事件
JMenuItem类
import sun.security.krb5.internal.crypto.KeyUsage;import javax.swing.*;import java.awt.*;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class Hello {public static void main(String[] args) {JFrame frame = new JFrame("一");JTextArea text = new JTextArea();text.setEditable(true);JMenu file = new JMenu("文件");JMenuBar menuBar = new JMenuBar();JMenuItem newItem = new JMenuItem("新建");JMenuItem openItem = new JMenuItem("打开");newItem.setMnemonic('N');openItem.setMnemonic('O');newItem.setAccelerator(KeyStroke.getKeyStroke('N', Event.CTRL_MASK));openItem.setAccelerator(KeyStroke.getKeyStroke('O', Event.CTRL_MASK));file.add(newItem);file.add(openItem);menuBar.add(file);frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {super.windowClosing(e);System.exit(1);}});frame.setJMenuBar(menuBar);frame.setVisible(true);frame.setSize(300,200);frame.setLocation(300,300);}}
事件处理
JMenuItem与JButton都是AbstractButton类的子类,事件处理机制是一样的
import sun.security.krb5.internal.crypto.KeyUsage;import javax.swing.*;import java.awt.*;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.WindowAdapter;import java.awt.event.WindowEvent;public class Hello {public static void main(String[] args) {JFrame frame = new JFrame("一");final JTextArea text = new JTextArea();text.setEditable(true);JMenu file = new JMenu("文件");JMenuBar menuBar = new JMenuBar();JMenuItem newItem = new JMenuItem("新建");JMenuItem openItem = new JMenuItem("打开");newItem.setMnemonic('N');openItem.setMnemonic('O');newItem.setAccelerator(KeyStroke.getKeyStroke('N', Event.CTRL_MASK));openItem.setAccelerator(KeyStroke.getKeyStroke('O', Event.CTRL_MASK));file.add(newItem);file.add(openItem);menuBar.add(file);newItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {text.append("选择了新建\n");}});openItem.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {text.append("选择了打开\n");}});frame.addWindowListener(new WindowAdapter() {@Overridepublic void windowClosing(WindowEvent e) {super.windowClosing(e);System.exit(1);}});frame.add(text);frame.setJMenuBar(menuBar);frame.setVisible(true);frame.setSize(300,200);frame.setLocation(300,300);}.}.
点击菜单项后 出现对应提示文字
…