我不知道标题是否可以理解。
无论如何,我都有一些JMenuItems,为此我设置了mouseListener。

mntmExtractPaleographyFeature.addMouseListener(this);


其中mntmExtractPaleographyFeature是一个JMenuitem,这是实现MouseListener的类。

所以我为mouseListener添加了方法

@Override
public void mouseReleased(MouseEvent arg0) {
    if(arg0.getSource()==mntmExtractPaleographyFeature) {
        //Code Here
    }


现在,我有了这个JButton extractPaleographyB,它与JMenuItem的功能完全相同。我不想复制/粘贴代码两次(也因为它不是唯一的按钮/ jmenuitem)。我尝试过

extractPaleographyB.addMouseListener(mntmExtractPaleographyFeature.getMouseListeners()[1]);


但这不起作用。任何的想法?

最佳答案

创建一个Action并用于菜单项和按钮

教程中的代码

Action leftAction = new LeftAction(); //LeftAction code is shown later
...
button = new JButton(leftAction)
...
menuItem = new JMenuItem(leftAction);


要创建Action对象,通常需要创建AbstractAction的子类,然后实例化它。在子类中,必须实现actionPerformed方法,以便在发生action事件时做出适当的反应。这是创建和实例化AbstractAction子类的示例:

leftAction = new LeftAction("Go left", anIcon,
             "This is the left button.",
             new Integer(KeyEvent.VK_L));
...
class LeftAction extends AbstractAction {
    public LeftAction(String text, ImageIcon icon,
                      String desc, Integer mnemonic) {
        super(text, icon);
        putValue(SHORT_DESCRIPTION, desc);
        putValue(MNEMONIC_KEY, mnemonic);
    }
    public void actionPerformed(ActionEvent e) {
        displayResult("Action for first button/menu item", e);
    }
}

关于java - 在JButton上模拟JMenuItem MouseListener,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31036360/

10-10 02:06