📄 testmenu.java
字号:
import java.awt.*;
import java.awt.event.*;
public class TestMenu //定义主类
{
public static void main(String args[])
{
MyMenuFrame mf = new MyMenuFrame();
mf.setSize(new Dimension(300,200)); //用setSize()方法指定窗口的初始大小
mf.setVisible(true); //使窗口可见
}
}
class MyMenuFrame extends Frame
implements ActionListener,ItemListener //定义窗口
{
MenuBar m_MenuBar;
Menu menuFile,menuEdit,m_Edit_Paste;
MenuItem mi_File_Open,mi_File_Close,mi_File_Exit,mi_Edit_Copy;
MenuItem pi_New,pi_Del,pi_Pro,mi_Paste_All,mi_Paste_Part;
CheckboxMenuItem mi_Edit_Cut;
PopupMenu popM;
TextArea ta;
MyMenuFrame() //构造函数
{
super("拥有菜单的窗口"); //指定窗口标题
ta = new TextArea("\n\n\n\n\n\n\t\t\t没有选择",5,20);
ta.addMouseListener(new HandleMouse(this)); //文本域响应鼠标事件
add("Center",ta);
popM = new PopupMenu(); //创建弹出窗口
pi_New = new MenuItem(" 新建 "); //为弹出窗口创建菜单子项
pi_New.addActionListener(this); //使菜单子项响应动作事件
popM.add(pi_New); //为弹出菜单加入菜单子项
pi_Del = new MenuItem(" 删除 ");
pi_Del.addActionListener(this);
popM.add(pi_Del);
pi_Pro = new MenuItem(" 属性 ");
pi_Pro.addActionListener(this);
popM.add(pi_Pro);
ta.add(popM); //将弹出窗口加在文本域上
m_MenuBar = new MenuBar();//创建菜单条
menuFile = new Menu("文件");//创建菜单项,创建菜单子项并指定快捷键
mi_File_Open = new MenuItem("打开",new MenuShortcut('o'));
mi_File_Close = new MenuItem("关闭");
mi_File_Exit = new MenuItem("退出");
mi_File_Exit.setShortcut(new MenuShortcut('x'));//设置菜单子项的快捷键
mi_File_Open.setActionCommand("打开"); //再设置命令名(用隐含名)
mi_File_Exit.setActionCommand("退出"); //以便动作响应程序调用
mi_File_Open.addActionListener(this); //使菜单子项响应动作事件
mi_File_Close.addActionListener(this);
mi_File_Exit.addActionListener(this);
menuFile.add(mi_File_Open); //把菜单子项加入菜单项
menuFile.add(mi_File_Close);
menuFile.addSeparator(); //加一条横向分割线
menuFile.add(mi_File_Exit);
m_MenuBar.add(menuFile); //把菜单项加入菜单条
menuEdit = new Menu("编辑");
mi_Edit_Copy = new MenuItem("复制");
mi_Edit_Cut = new CheckboxMenuItem("剪切"); //创建选择菜单子项
m_Edit_Paste = new Menu("粘贴"); //创建二级菜单项
mi_Paste_All = new MenuItem("全部粘贴");
mi_Paste_Part = new MenuItem("部分粘贴");
mi_Edit_Copy.addActionListener(this);
mi_Edit_Cut.addItemListener(this); //检测盒菜单子项产生选择事件
m_Edit_Paste.add(mi_Paste_Part); //为二级菜单项加入菜单子项
m_Edit_Paste.add(mi_Paste_All);
mi_Paste_Part.addActionListener(this);
mi_Paste_All.addActionListener(this);
menuEdit.add(mi_Edit_Copy);
menuEdit.add(mi_Edit_Cut);
menuEdit.addSeparator();
menuEdit.add(m_Edit_Paste); //把二级菜单项加入菜单项
m_MenuBar.add(menuEdit);
this.setMenuBar(m_MenuBar); //把菜单条加入整个Frame容器
}
public void actionPerformed(ActionEvent e)//响应动作事件
{
if(e.getActionCommand()=="退出")//选择"退出"菜单则关闭窗口退出程序
{
dispose();
System.exit(0);
}
else //否则显示选择的命令名
ta.setText("\n\n\n\n\n\n\t\t\t"+e.getActionCommand());
}
public void itemStateChanged(ItemEvent e)//响应CheckboxMenuItem单击事件
{
if(e.getSource()==mi_Edit_Cut)
if(((CheckboxMenuItem)e.getSource()).getState()) //查看是否选中
ta.setText("\n\n\n\n\n\n\t\t\t"+"选择了" //因为无命令名,所以用标签
+((CheckboxMenuItem)e.getSource()).getLabel());
else
ta.setText("\n\n\n\n\n\n\t\t\t"+"未选择"
+((CheckboxMenuItem)e.getSource()).getLabel());
}
}
class HandleMouse extends MouseAdapter//处理鼠标事件类,继承鼠标事件裁剪类
{
MyMenuFrame m_Parent; //产生事件的组件所在的窗口容器
HandleMouse(MyMenuFrame mf)//构造函数
{
m_Parent = mf;
}
public void mouseReleased(MouseEvent e)//鼠标按键松开事件弹出菜单
{
if(e.isPopupTrigger()) //检查鼠标事件是否是由弹出菜单引发的
m_Parent.popM.show((Component)e.getSource(),e.getX(),e.getY());
} //将弹出菜单显示在用户鼠标点击的位置
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -