AWT中的菜单由如下类组合而成
- MenuBar:菜单条,菜单的容器
- Menu:菜单组件,菜单项的容器
- PopupMenu:上下文菜单组件
- MenuItem:菜单项组件
- CheckboxMenuItem:复选框菜单组件
- MenuShortcut:菜单快捷键组件
package com.my;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
public class Test{
private Frame f=new Frame("测试");
private MenuBar mb=new MenuBar();
Menu file=new Menu("文件");
Menu edit=new Menu("编辑");
MenuItem newItem=new MenuItem("新建");
MenuItem saveInem=new MenuItem("保存");
//创建exitItem菜单项,指定使用“Ctrl+X”快捷键
MenuItem exitItem=new MenuItem("退出",new MenuShortcut(KeyEvent.VK_X));
CheckboxMenuItem autoWrap=new CheckboxMenuItem("自动换行");
MenuItem copyItem=new MenuItem("复制");
MenuItem pasteItem=new MenuItem("粘贴");
Menu format=new Menu("格式");
MenuItem commentItem=new MenuItem("注释",new MenuShortcut(KeyEvent.VK_SLASH,true));
MenuItem cancelItem=new MenuItem("取消注释");
private TextArea ta=new TextArea(6,40);
public void init(){
//以Lambda表达式创建菜单事件监听器
ActionListener menuListener=e->{
String cmd=e.getActionCommand();
ta.append("单击“"+cmd+"”菜单"+"\n");
if(cmd.equals("退出"))
{
System.exit(0);
}
};
commentItem.addActionListener(menuListener);
exitItem.addActionListener(menuListener);
file.add(newItem);
file.add(saveInem);
file.add(exitItem);
edit.add(autoWrap);
edit.addSeparator();
edit.add(copyItem);
edit.add(pasteItem);
format.add(commentItem);
format.add(cancelItem);
edit.add(new MenuItem("-"));
//format菜单组合到edit菜单中,从而形成二级菜单
edit.add(format);
mb.add(file);
mb.add(edit);
//为f窗口设置菜单条
f.setMenuBar(mb);
//以匿名内部类的形式来创建事件监听对象
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e)
{
System.exit(0);
}
});
f.add(ta);
f.pack();
f.setVisible(true);
}
public static void main(String[] args) {
new Test().init();
}
}
运行效果图: