java gui 选项_【Java-GUI】04 菜单

——1、菜单组件

相关对象:

MenuBar 菜单条

Menu 菜单容器

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

MenuItem 菜单项

CheckboxMenuItem 复选框菜单项

小技巧:

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

88354dc3723843a211fc5d9941248b8c.png

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);

}

}

效果还不错:

966e086f0ac97939d965ac4157871160.png

设置的菜单:

9e2b6f53ec56d08df82feb554ae43d02.png

多点击几次之后发现没有换行,需要加上\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);

}

}

效果:

a5e751dfc6cf38dfd74b2a57a20ae669.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值