Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/365.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取Java中JMenu和JMenuItem的MouseListener事件_Java_Mouselistener - Fatal编程技术网

获取Java中JMenu和JMenuItem的MouseListener事件

获取Java中JMenu和JMenuItem的MouseListener事件,java,mouselistener,Java,Mouselistener,我在JFrame中放置了一个JMenuBar, 现在在JMenuBar里面有15个JMenus,而且还有超过 每个JMenus内有10个JMenus项目 现在我很难先写150多行 为每个JMenuBar组件添加MouseListener,同样为JMenuItem添加MouseListener 当你不得不这样写的时候,头痛就更厉害了 evt.getSource==JMenu1或evt.getSource==JMenuItem1 最后,我需要什么来执行MouseListener事件 特别是对于JMe

我在JFrame中放置了一个JMenuBar, 现在在JMenuBar里面有15个JMenus,而且还有超过 每个JMenus内有10个JMenus项目

现在我很难先写150多行 为每个JMenuBar组件添加MouseListener,同样为JMenuItem添加MouseListener

当你不得不这样写的时候,头痛就更厉害了 evt.getSource==JMenu1或evt.getSource==JMenuItem1

最后,我需要什么来执行MouseListener事件 特别是对于JMenu或JMenuItem


请帮助……

我没有您的代码示例,但以下是通过减少和重用代码可以做的一些事情:

JPopupMenu popup = new JPopupMenu();
popup.add(makeMenuItem("menuitem1"));

private JMenuItem makeMenuItem(String label) {
    JMenuItem item = new JMenuItem(label);
    item.addActionListener(this);
    return item;
}

在您的情况下,只要将代码修改为JMenuBar和AddMouseListener(如果这些是您的选择)。至于
evt.getSource
比较,您可能需要将菜单项存储在一个数组中,然后执行一个比较循环

看一看,菜单并不是为了使用鼠标侦听器而设计的,此外,如果使用ActionListener,你会遇到完全相同的问题……在150多个针对150多个munu项采取的150多个操作中有什么共同点吗?对于,这些菜单项都共享一个操作。