——1、菜单组件

相关对象:

MenuBar 菜单条

Menu 菜单容器

PopupMenu 上下文菜单(右键弹出菜单组件)

MenuItem 菜单项

CheckboxMenuItem 复选框菜单项

小技巧:

1、添加这样的菜单项分割线可以直接调用add(new MenuItem("-"))实现

2、给某一个菜单项绑定快捷键,调用 new MenuItem("菜单项名称",new MenuShortcut(KeyEvent.枚举按键值,true))

案例:

package cn.dzz;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

public class Main {

public static void main(String[] args) {

// 创建窗体

Frame frame = new Frame();

// 先把界面需要的组件创建出来

MenuBar menuBar = new MenuBar();

Menu fileMenu = new Menu("file");

Menu editMenu = new Menu("edit");

// 格式菜单嵌入在编辑菜单对象中

Menu formatMenu = new Menu("Format");

// 菜单项

MenuItem autoNextLineMenuItem = new MenuItem("autoNextLine");

MenuItem copyMenuItem = new MenuItem("copy");

MenuItem pasteMenuItem = new MenuItem("paste");

MenuItem commentMenuItem = new MenuItem("comment Ctrl + Shift + Q");

MenuItem cancelCommentMenuItem = new MenuItem("comment cancel");

// 别漏了文本编辑区

TextArea textArea = new TextArea(6,40);

// 事件交互处理

commentMenuItem.addActionListener(new ActionListener() {

@Override

public void actionPerformed(ActionEvent e) {

textArea.append("您点击了菜单项:" + e.getActionCommand());

}

});

// 先从小的组件开始组装到一起

// 格式菜单装上注释和取消注释

formatMenu.add(commentMenuItem);

formatMenu.add(cancelCommentMenuItem);

// 再组装编辑菜单

editMenu.add(autoNextLineMenuItem);

editMenu.add(copyMenuItem);

editMenu.add(pasteMenuItem);

editMenu.add(new MenuItem("-")); // 菜单分割线

editMenu.add(formatMenu);

// 再是菜单条添加菜单对象

menuBar.add(fileMenu);

menuBar.add(editMenu);

// 总体布局确定

frame.setMenuBar(menuBar);

frame.add(textArea);

frame.pack();

frame.setVisible(true);

}

}

效果还不错:

设置的菜单:

多点击几次之后发现没有换行,需要加上\n换行字符

textArea.append("您点击了菜单项:" + e.getActionCommand() + "\n");

弹出式菜单对象 PopupMenu

案例:

packagecn.dzz;import javax.swing.*;import java.awt.*;import java.awt.event.*;public classMain {public static voidmain(String[] args) {//创建窗体

Frame frame = newFrame();//先创建组件,之后进行布局设置

TextArea textArea = new TextArea("demo text 文本内容",6, 40);

Panel panel= newPanel();

panel.setPreferredSize(new Dimension(400,300)); //大小

PopupMenu popupMenu = new PopupMenu(); //右键菜单

MenuItem commentMenuItem= new MenuItem("comment");

MenuItem cancelCommentMenuItem= new MenuItem("cancelComment");

MenuItem copyMenuItem= new MenuItem("copy");

MenuItem saveMenuItem= new MenuItem("save");//布局组装

popupMenu.add(commentMenuItem);

popupMenu.add(cancelCommentMenuItem);

popupMenu.add(saveMenuItem);

popupMenu.add(copyMenuItem);

panel.add(popupMenu);

Box verticalBox=Box.createVerticalBox();

verticalBox.add(textArea);

verticalBox.add(panel);

frame.add(verticalBox, BorderLayout.CENTER);//事件监听设置

ActionListener actionListener = newActionListener() {

@Overridepublic voidactionPerformed(ActionEvent e) {

String actionCommand=e.getActionCommand();

textArea.append("\n您右键菜单选择的是:" +actionCommand);

}

};

commentMenuItem.addActionListener(actionListener);

cancelCommentMenuItem.addActionListener(actionListener);

copyMenuItem.addActionListener(actionListener);

saveMenuItem.addActionListener(actionListener);//鼠标右键监听设置

panel.addMouseListener(newMouseAdapter() {

@Overridepublic voidmouseReleased(MouseEvent e) {//super.mouseReleased(e);

boolean popupTrigger =e.isPopupTrigger();if(popupTrigger) {//参数1 所属的父组件对象,

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

}

}

});

frame.pack();

frame.setVisible(true);

}

}

效果:

java gui 选项_【Java-GUI】04 菜单相关推荐

  1. java星空屏幕_[Java教程]窗口设置_星空网

    窗口设置 2016-04-13 0 /** * 这个是GUI的事例程序: * */ package w160412.wang.main;import java.awt.Color; import ja ...

  2. java取负数_[Java] 告别“CV 工程师”码出高效!(基础篇)

    作为一名资深的 CV 工程师,某天,当我再一次日常看见满屏的报错信息与键盘上已经磨的泛白的 Ctrl.C.V 这三个按键时,我顿悟了. 百度谷歌复制粘贴虽然很香,但是总是依靠前人种树,终会有一天失去乘 ...

  3. java小朋友猜拳_[Java教程]Java猜拳小游戏(剪刀、石头、布)

    [Java教程]Java猜拳小游戏(剪刀.石头.布) 0 2015-09-29 08:00:04 import java.util.Random;import java.util.Scanner;pu ...

  4. java控制语句练习题_[Java初探实例篇02]__流程控制语句知识相关的实例练习

    本例就流程控制语句的应用方面,通过三个练习题来深入学习和巩固下学习的流程控制语句方面的知识,设计到,if条件判断语句,switch多分支语句,for循环语句及其嵌套多层使用,while循环语句. 练习 ...

  5. java 文本压缩_[Java基础]Java使用GZIP进行文本压缩

    import java.io.IOException; import java.util.zip.GZIPOutputStream; import org.apache.commons.io.outp ...

  6. java private 对象_[Java笔记]类的所有构造器都是private权限,就一定没有办法实例化它的对象了么?...

    笔者以前学过C++语言.众所周知,C++也是一门面向对象程序设计语言.还记得当时在大学的时候,老师讲过这样的话:类的构造函数不应该设置成private权限,这样的话还怎么去实例化类的对象?当时也信以为 ...

  7. java resources 目录_[Java] 在 jar 文件中读取 resources 目录下的文件

    注意两点: 1. 将资源目录添加到 build path,确保该目录下的文件被拷贝到 jar 文件中. 2. jar 内部的东西,可以当作 stream 来读取,但不应该当作 file 来读取. 例子 ...

  8. java斗地主发牌_[Java源码]扑克牌——斗地主发牌实现

    --------------------------------------- --------------------------------------- ----------一个扑克牌核心和简单 ...

  9. java gui容器_[Java教程]GUI Panel 容器以及布局管理器

    [Java教程]GUI Panel 容器以及布局管理器 0 2016-11-09 07:04:32 一.Panel是AWT中的另一个典型的容器,它代表不能独立存在.必须放在其他容器中使用. 1.可作为 ...

最新文章

  1. 手动用hibernate-validator校验入参
  2. 学习笔记(10):Python网络编程并发编程-粘包现象
  3. 手机的小窗口怎么弄_荣耀9X如何设置桌面小工具?划重点,这个要考
  4. Outlook Express 错误代码表
  5. caffe各种依赖包配置
  6. python 2.7.10 找不到 libmysqlclient.18.dylib 解决方案
  7. java file util_Java FileUploadUtil工具类详解
  8. office 2007安装包
  9. java计算工作日,排除周末以及法定假日
  10. Oracle 12c:配置em,解决em登录问题
  11. 智商太低,居然算不出病狗神题了
  12. 学计算机白头,关于「一夜白头」的科学解释!90%的人不知道!
  13. Linux静态库与动态库的概念及制作
  14. 一个div分上下两部分,上部分高度不固定,下面部分自动填满剩余高度
  15. 领芯微基于LCM32F037吹风筒方案
  16. 2018年总结和职场规划
  17. mysql怎么看端口号_mysql端口号(怎么查看mysql的端口号)
  18. 24V转12V,9V,8V,6V,5V,3.3V,3V降压芯片和线性LDO选型介绍
  19. mysql之DDL操作
  20. C语言程序设计--结构体--计算该日是在本年中是第几天

热门文章

  1. [ c++] cmake 编译时 undefined reference to `std::cout‘ 错误的解决方案
  2. AndroidStudio EventBus报错解决方法its super classes have no public methods with the @Subscribe
  3. universal image loader在listview/gridview中滚动时重复加载图片的问题及解决方法
  4. 在AngularJS控制器之间共享数据
  5. 媒体查询中“屏幕”和“仅屏幕”之间有什么区别?
  6. 我为什么要使用IDE? [关闭]
  7. 共享首选项中commit()和apply()之间的区别是什么
  8. 为什么总是在__new __()之后调用__init __()?
  9. 将多个PDF文件合并/转换为一个PDF
  10. 什么是反射,为什么有用?