我不知道标题是否可以理解。
无论如何,我都有一些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/