`
nishijia
  • 浏览: 53231 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JMenu +多种组合快捷键+图片

阅读更多

        最近用到了JMenu,可是它不能加 3种以上的组合键,虽然有了 setAccelerator这个方法,但是 用了就会抛出异常,让人非常郁闷,把互联网上搜了个遍,没找到,国外论坛有人说这个是SUN的BUG,呵呵,没办法查看了源码,原来:

    public void setAccelerator(KeyStroke keystroke)
    {
        throw new Error("setAccelerator() is not defined for JMenu.  Use setMnemonic() instead.");
    }

 

直接抛异常,原来 JMenu 是继承 JMenuItem的,但是SUN为什么要屏蔽这个方法呢  setMnemonic(“填入值”)这个方法只能是ALT+你填入的值,要想做到3个以上的话只能自己动手改写了。

 

import javax.swing.Action;
import javax.swing.DefaultButtonModel;
import javax.swing.Icon;
import javax.swing.JMenu;
import javax.swing.KeyStroke;

public class MyJMenu extends JMenu{
 
	private KeyStroke accelerator;

	private boolean isMouseDragged;
	

	  public MyJMenu(String s, Icon icon) {
		isMouseDragged = false;
		setModel(new DefaultButtonModel());
		init(s, icon);
		initFocusability();
	}

	void initFocusability() {
		setFocusable(false);
	}

	public MyJMenu() {
		super();
	}
	  
	public MyJMenu(Action action) {
		super(action);
	}

	public MyJMenu(String s, boolean flag) {
		super(s, flag);
	}

	public MyJMenu(String s) {
		super(s);
	}
//这里以上的代码 主要是 为了在JMenu上能放个小图片 呵呵

//这里Override
	@Override
	public void setAccelerator(KeyStroke keystroke) {
		KeyStroke keystroke1 = accelerator;
		accelerator = keystroke;
		repaint();
		revalidate();
		firePropertyChange("accelerator", keystroke1, accelerator);
	}

	@Override
	public KeyStroke getAccelerator() {
		return accelerator;
	}
}

 这样就ok了

0
0
分享到:
评论

相关推荐

    java swing入门级的菜单及子菜单的实现的示例代码

    通过JMenuBar在面板上实现总菜单,通过JMenu创建总菜单栏的下拉菜单,在下拉菜单中加入JMenuItem,就是加入我们常用子菜单,如果需要在子菜单上嵌套菜单,就需要在下拉菜单中加入JMenu,在这个JMenu上加入JMenuItem...

    jMenu v2.0

    【jMenu v2.0】是一款专为网页设计者打造的水平导航菜单系统,它具有无限级别的下拉子菜单功能,极大地增强了网站的导航体验。这个菜单系统是基于JavaScript和CSS构建的,允许用户轻松创建层次分明、交互性强的菜单...

    java中jfame的使用代码JMenubar.Jmenu.JmenuItem

    通过组合`JFrame`、`JMenuBar`、`JMenu`和`JMenuItem`,我们可以创建出具有交互式菜单的复杂Java Swing应用程序。在实际项目中,我们还可以进一步定制这些组件,比如设置图标、调整字体、添加快捷键等,以满足不同...

    Java零基础 - 文本编辑快捷键.md

    ### Java零基础-文本编辑快捷键 #### 概要 本文档主要介绍如何在Java中利用按键事件处理机制实现文本编辑器的快捷键功能。针对初学者,文章提供了详细的步骤和一个简化的源码示例,帮助读者理解如何在Java程序中...

    java做的简易记事本含快捷键_查找_替换等

    此外,程序还引入了快捷键操作和鼠标右键菜单,极大地提升了用户体验。 #### 二、主要功能模块 ##### 1. 文件操作 - **新建**:创建一个新的空白文档。 - **打开**:选择一个已存在的文件并打开它。 - **保存**:...

    java做的简易记事本含快捷键查找替换等收集.pdf

    6. **菜单与菜单项**: `JMenu`和`JMenuItem`用于创建菜单栏和子菜单,如“文件”、“编辑”、“格式”等。菜单项可以关联到ActionListener,当被选中时执行相应操作。 7. **撤销/重做机制**: 可能使用了`javax....

    水平导航菜单的jQuery组件

    jMenu 是一款基于 jQuery 的高效组件,专门用于构建具备无限级子菜单的水平导航菜单。这款插件的设计理念是简洁和易用,使得开发者能够快速地在项目中集成高质量的导航功能。 jMenu 插件的核心特性包括: 1. **...

    Java GUI编程高级

    在Java中,可以使用`setMnemonic`方法为`JMenu`设置Alt+字符键的快捷键,如`file.setMnemonic(KeyEvent.VK_F)`。 - 对于`JMenuItem`,可以使用`setAccelerator`方法设置Ctrl或Alt+字符键的快捷键,如`open....

    jtree和QQ项目\使用jmenu实现QQ的好友界面

    在Java编程领域,`JTree` 和 `JMenu` 是Swing库中的两个重要组件,它们常用于构建用户界面。本项目"jtree和QQ项目\使用jmenu实现QQ的好友界面"旨在利用这两个组件来复刻QQ软件的好友管理功能,提供一个直观且易于...

    一个用java编写的记事本小程序参考.pdf

    通过`KeyStroke`和`KeyEvent`,可以为菜单项设置快捷键,如`jme1.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, KeyEvent.CTRL_MASK))`设置的是Ctrl+N的快捷键。 文件操作涉及到`File`类,如`FileReader`...

    java程序GUI设计——计算器界面

    在实验中,可以看到一些按钮使用了 `add()` 方法直接添加,这通常采用的是默认的 `FlowLayout`,而其他按钮通过 `add(new Button(...))` 创建,可能采用了自定义布局或组合布局。 4. **属性设置**: - `...

    jMenu:带有多级子菜单的简单菜单上下文生成。 也可以用作网站菜单

    **jMenu: 构建多级子菜单的JavaScript解决方案** jMenu是一款轻量级的JavaScript库,专门设计用于创建具有多级子菜单的上下文菜单或网站导航菜单。这款库以其简洁的API和高效的性能,使得开发者能够快速、便捷地在...

    java开发的记事本源码

    通过 `KeyStroke.getKeyStroke()` 方法结合 `setAccelerator()` 方法,可以为菜单项设置快捷键,如 `mItemFileNew.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_N, Event.CTRL_MASK));` 为新建菜单项设置了...

    java 记事本程序和报告

    在Java中,可以使用JMenu、.JMenuItem和Key Bindings来创建和绑定这些功能。例如,Ctrl+C、Ctrl+V等快捷键对应复制和粘贴操作。 5. **格式化和样式**:虽然Java记事本可能没有实现所有Windows记事本的功能,但它...

    JavaGUI编程高级

    `JMenu`的快捷键通常为`Alt`加上字符键的组合,而`JMenuItem`的快捷键可以是`Ctrl`加上字符键或`Alt`加上字符键的组合,通过调用`setMnemonic`和`setAccelerator`方法来实现。 #### 四、菜单项的事件处理 当用户...

    java绘图软件实验源程

    - 包含一个名为“文件”的菜单(`JMenu`),快捷键为F。 - “文件”菜单中包含以下功能: - 新建(`JMenuItem`):快捷键为Ctrl+N,用于创建一个新的绘图文档。 - 打开:快捷键为Ctrl+L,用于打开已存在的绘图文档。 ...

    java swing 图形界面实例

    JMenu 还支持快捷键设置,方便用户操作。 3. **JMenuBar**: JMenuBar 是菜单栏的类,通常位于窗口的顶部。你可以将多个 JMenu 添加到 JMenuBar 中,创建多级菜单系统。 4. **JMenuItem**: JMenuItem 是菜单中的一...

    Java自学图形菜单界面.docx

    通过组合使用`JMenu`、`JMenuBar`和`JMenuItem`,你可以构建出复杂的菜单结构,以满足各种应用需求。此外,你还可以为这些菜单项添加事件监听器,以便在用户选择某个菜单项时执行相应的操作。例如,可以通过实现`...

    图片管理系统

    “图片管理系统”是一个综合运用了Java语言的GUI编程、数据库操作以及文件处理等多种技术的典型示例。通过对该项目的学习和实践,不仅可以掌握Java基础语法,还能深入了解面向对象编程的思想以及实际项目的开发流程...

    计算器模版

    JMenu menuEdit = new JMenu("编辑(E)"); // 创建“编辑”菜单 JMenuItem CopyItem = new JMenuItem("复制"); // 创建“复制”菜单项 JMenuItem PasteItem = new JMenuItem("粘贴"); // 创建“粘贴”菜单项 ...

Global site tag (gtag.js) - Google Analytics