if (e.getClickCount() == 1 && e.getButton() == MouseEvent.BUTTON3){ //添加右击快捷菜单
}
我这样是实现鼠标右击事件,就会弹出快捷菜单。但是当我直接右击不会显示出来快捷菜单的效果,
一定要我先左键单击一下,在点击右建才会弹出来。这是怎么回事呢? 该怎么写,望各位指点一下
}
我这样是实现鼠标右击事件,就会弹出快捷菜单。但是当我直接右击不会显示出来快捷菜单的效果,
一定要我先左键单击一下,在点击右建才会弹出来。这是怎么回事呢? 该怎么写,望各位指点一下
remoteShapeButton.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 1 && e.getButton() == MouseEvent.BUTTON3) { }
鼠标事件
把MouseListener放到frame里就可以了
if (e.getClickCount() == 1 && e.getButton() == MouseEvent.BUTTON3){
}
}
}
remoteShapeButton就是我单击的那个Button ,我remoteShapeButton.addMouseListener(new MouseAdapter(){}); 这样不是加了事件吗?
不行吗?
它是选中的状态了,但是必须先左击,右击才有菜单显示!右击的时候比左击拦截了一下。
catchKeyClick[] cas = mf.getKeyOnClickCatchables();
for (catchKeyClick elem : cas) {
elem.catchClickedButton(getClickeKey(select));
}
//===================================== public void catchClickedButton(final RemoteShapeButton remoteShapeButton) { //这个是我自定义的一个事件,RemoteShapeButton自定义按钮 remoteShapeButton.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { //鼠标事件
if (macroDevice.getMacroDeviceShowType() == FinalVariable.HOTKEY_TYPE) {
if (key.getKeyNo() >= 0 && key.getKeyNo() < 48) {
key.setHard(true);
if (e.getClickCount() == 2 && e.getButton() == MouseEvent.BUTTON1) {
if (key.getCode() == null) {
javax.swing.JDialog jd = new JDialog(MFrame.getMainFrame(), true);
AddMacroButton addHardKeyMacro = new AddMacroButton(macroDevice, key, key.getKeyNo());
jd.add(addHardKeyMacro);
jd.setTitle("Add Button");
addHardKeyMacro.setJDialog(jd);
jd.setBounds(300, 300, 400, 200);
jd.setVisible(true);
} else {
javax.swing.JDialog jd = new JDialog(MFrame.getMainFrame(), true);
AddMacroButton addHardKeyMacro = new AddMacroButton(macroDevice, key, key.getKeyNo());
jd.add(addHardKeyMacro);
jd.setTitle("Modify Button");
addHardKeyMacro.setJDialog(jd);
jd.setBounds(300, 300, 400, 200);
jd.setVisible(true);
} }
if (e.getClickCount() == 1 && e.getButton() == MouseEvent.BUTTON3) {// rightClickOne(e); javax.swing.JPopupMenu popupMenu = new JPopupMenu();
}
}
}
}
}
这块代码没问题的,我测试了下,问题应该是在别的地方,DEBUG看看嘛
测试的代码,右键直接有响应的 JButton button = new JButton();
button.addMouseListener(new MouseAdapter(){
@Override
public void mouseClicked(MouseEvent e) {
if(e.getClickCount() ==1 && e.getButton() == MouseEvent.BUTTON3){
System.out.println("a haha");
}
}
});
setLayout(new BorderLayout());
add(button,BorderLayout.EAST);
setVisible(true);
public void catchClickedButton(final RemoteShapeButton remoteShapeButton)。这个是自定义的事件,他在这个整个JPanel上面的,点击哪个Button我就传入的哪个RemoteShapeButton 。 问题就在这了,我调试了一下,因为这个事件是单击的,RemoteShapeButton 的鼠标事件又在catchClickedButton()这个事件里面写的。所有直接右击就根本没有触发右击事件。所以才出现要先点击一下,触发自定义的这个事件,才能进入右键的事件。。
就怎么都不触发那个MouseClick事件,然后我就用actionFormed事件来代替用到自定义的事件传入Button了。(就是我现在的思路)
这样写 就对双击事件也产生了影响,不止右击了 我根据双击弹出的对话框,会弹出来多次,关掉自己动弹出来。 我再好好去看看在自定义的JButton那边能好弄不? 非常谢谢virginkj 的 帮忙