Java GUI编程菜单组件实例详解

网友投稿 269 2022-08-05


Java GUI编程菜单组件实例详解

前面讲解了如果构建GUI界面,其实就是把一些GUI的组件,按照一定的布局放入到容器中展示就可以了。在实际开发中,除了主界面,还有一类比较重要的内容就是菜单相关组件,可以通过菜单相关组件很方便的使用特定的功能,在AWT中,菜单相关组件的使用和之前学习的组件是一模一样的,只需要把菜单条、菜单、菜单项组合到一起,按照一定的布局,放入到容器中即可。

下表中给出常见的菜单相关组件:

菜单组件名称功能MenuBar菜单条 , 菜单的容器 。Menu菜单组件 , 菜单项的容器 。 它也是Menultem的子类 ,所以可作为菜单项使用PopupMenu上下文菜单组件(右键菜单组件)Menultem菜单项组件 。CheckboxMenuItem复选框菜单项组件

下图是常见菜单相关组件集成体系图:

菜单相关组件使用:

1.准备菜单项组件,这些组件可以是MenuItem及其子类对象

2.准备菜单组件Menu或者PopupMenu(右击弹出子菜单),把第一步中准备好的菜单项组件添加进来;

3.准备菜单条组件MenuBar,把第二步中准备好的菜单组件Menu添加进来;

4.把第三步中准备好的菜单条组件添加到窗口对象中显示。

小技巧:

1.如果要在某个菜单的菜单项之间添加分割线,那么只需要调用Menu的add(new MenuItem(-))即可。

2.如果要给某个菜单项关联快捷键功能,那么只需要在创建菜单项对象时设置即可,例如给菜单项关联 ctrl+shif+/ 快捷键,只需要:new MenuItem("菜单项名字",new MenuShortcut(KeyEvent.VK_Q,true);

案例1:

​使用awt中常用菜单组件,完成下图效果

演示代码1:

import java.awt.*;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

public class SimpleMenu {

//创建窗口

private Frame frame = new Frame("这里测试菜单相关组件");

//创建菜单条组件

private MenuBar menuBar = new MenuBar();

//创建文件菜单组件

private Menu fileMenu = new Menu("文件");

//创建编辑菜单组件

private Menu editMenu = new Menu("编辑");

//创建新建菜单项

private MenuItem newItem = new MenuItem("新建");

//创建保存菜单项

private MenuItem saveItem = new MenuItem("保存");

//创建退出菜单项

private MenuItem exitItem = new MenuItem("退出");

//创建自动换行选择框菜单项

private CheckboxMenuItem autoWrap = new CheckboxMenuItem("自动换行");

//创建复制菜单项

private MenuItem copyItem = new MenuItem("复制");

//创建粘贴菜单项

private MenuItem pasteItem = new MenuItem("粘贴");

//创建格式菜单

private Menu formatMenu = new Menu("格式");

//创建注释菜单项

private MenuItem commentItem = new MenuItem("注释");

//创建取消注释菜单项

private MenuItem cancelItem = new MenuItem("取消注释");

//创建一个文本域

private TextArea ta = new TextArea(6, 40);

public void init(){

//定义菜单事件监听器

ActionListener listener = new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

String command = e.getActionCommand();

ta.append("单击“"+command+"”菜单\n");

if (command.equals("退出")){

System.exit(0);

}

}

};

//为注释菜单项和退出菜单项注册监听器

commentItem.addActionListener(listener);

exitItem.addActionListener(listener);

//为文件菜单fileMenu添加菜单项

fileMenu.add(newItem);

fileMenu.add(saveItem);

fileMenu.add(exitItem);

//为编辑菜单editMenu添加菜单项

editMenu.add(autoWrap);

editMenu.add(copyItem);

editMenu.add(pasteItem);

//为格式化菜单formatMenu添加菜单项

formatMenu.add(commentItem);

formatMenu.add(cancelItem);

//将格式化菜单添加到编辑菜单中,作为二级菜单

editMenu.add(new MenuItem("-"));

editMenu.add(formatMenu);

//将文件菜单和编辑菜单添加到菜单条中

menuBar.add(fileMenu);

menuBar.add(iDewavfFqeditMenu);

//把菜单条设置到frame窗口上

frame.setMenuBar(menuBar);

//把文本域添加到frame中

frame.add(ta);

//设置frame最佳大小并可见

frame.pack(http://);

iDewavfFq frame.setVisible(true);

}

public static void main(String[] args) {

new SimpleMenu().init();

}

}

案例2:

​通过PopupMenu实现下图效果:

实现思路:

1.创建PopubMenu菜单组件;

2.创建多个MenuItem菜单项,并添加到PopupMenu中;

3.将PopupMenu添加到目标组件中;

4.为需要右击出现PopubMenu菜单的组件,注册鼠标监听事件,当监听到用户释放右键时,弹出菜单。

演示代码2:

import java.awt.*;

import java.awt.event.MouseAdapter;

import java.awt.event.MouseEvent;

public class PopupMenuTest {

private Frame frame = new Frame("这里测试PopupMenu");

// 创建PopubMenu菜单

private PopupMenu popupMenu = new PopupMenu();

// 创建菜单条

private MenuItem commentItem = new MenuItem("注释");

private MenuItem cancelItem = new MenuItem("取消注释");

private MenuItem copyItem = new MenuItem("复制");

private MenuItem pasteItem = new MenuItem("保存");

// 创建一个文本域

private TextArea ta = new TextArea("我爱中华!!!", 6, 40);

// 创建一个Panel

private Panel panel = new Panel();

public void init() {

// 把菜单项添加到PopupMenu中

popupMenu.add(commentItem);

popupMenu.add(cancelItem);

popupMenu.add(copyItem);

popupMenu.add(pasteItem);

// 设置panel大小

panel.setPreferredSize(new Dimension(300, 100));

// 把PopupMenu添加到panel中

panel.add(popuiDewavfFqpMenu);

// 为panel注册鼠标事件

panel.addMouseListener(new MouseAdapter() {

@Override

public void mouseReleased(MouseEvent e) {

boolean flag = e.isPopupTrigger();

// 判断当前鼠标操作是不是触发PopupMenu的操作

if (flag) {

// 让PopupMenu显示在panel上,并且跟随鼠标事件发生的地方显示

popupMenu.show(panel, e.getX(), e.getY());

}

}

});

// 把ta添加到frame中间区域中

frame.add(ta);

// 把panel添加到frame底部

frame.add(panel, BorderLayout.SOUTH);

// 设置frame最佳大小,并可视;

frame.pack();

frame.setVisible(true);

}

public static void main(String[] args) {

new PopupMenuTest().init();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:IDEA搭建SpringBoot多模块聚合工程过程详解(多模块聚合工程)
下一篇:如何写一份接口需求文档?手把手教你编写接口需求文档
相关文章

 发表评论

暂时没有评论,来抢沙发吧~