Java程序设计-图形用户界面-十三菜单
目录
Java程序设计 图形用户界面 【十三】菜单
Java程序设计 图形用户界面 【十三】菜单
菜单组件
JMenu与JMenuBar
菜单
JMenuBar组件的功能是用来摆放JMenu组件,当建立完多个JMenu组件之后,需要通过JMenuBar组件来将JMenu组件加入到窗口中
JMenuBar
方法 | 作用 |
---|---|
public JMenuBar() | 创建新的JMenuBar对象 |
public JMenu add(JMenu e) | 将指定的JMenu加入到JMenuBar中 |
public JMenu getMenu(int index) | 返回指定位置的菜单 |
public int getMenuCount() | 返回菜单栏上的菜单数 |
JMenu
方法 | 作用 |
---|---|
public JMenu(String s) | 创建新的JMenu,并指定菜单名称 |
public JMenuItem add(JMenuItem menuItem) | 增加新的菜单项 |
public void addSeparator() | 加入分隔线 |
构建菜单演示:
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() {
@Override
public 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类
方法 | 作用 |
---|---|
public JMenuItem(Icon icon) | 创建带有图标的JMenuItem |
public JMenuItem(String text) | 创建带有指定文本的JMenuItem |
public JMenuItem(String text,Icon icon) | 创建带有指定文本和图标的JMenuItem |
public JMenuItem(String text,int mnemonic) | 创建带有指定文本的JMenuItem,并指定助记符 |
public void setMnemonic(int mnemonic) | 指定菜单项的助记符 |
public void setAccelerator(KeyStroke keyStroke) | 设置快捷键的组合键 |
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() {
@Override
public 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() {
@Override
public void actionPerformed(ActionEvent e) {
text.append("选择了新建\n");
}
});
openItem.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
text.append("选择了打开\n");
}
});
frame.addWindowListener(new WindowAdapter() {
@Override
public 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);
}.
}.
点击菜单项后 出现对应提示文字
…