写扫雷的时候碰到的问题,从网上找了解决办法,但找不到具体的代码写法。自己总结后写出来的
JButton button=new JButton();
// 对JButton大小的设置
button.setPreferredSize(new Dimension(40,40));
button.addMouseListener(new MouseAdapter() {
private boolean flag=false;
public void mousePressed(MouseEvent e) {
if(e.getModifiersEx()==(MouseEvent.BUTTON3_DOWN_MASK + MouseEvent.BUTTON1_DOWN_MASK)){
System.out.println("左右键同时按下 "); //判断左右键同时按下
flag=true;
}
}
public void mouseReleased(MouseEvent e){
if(e.getButton()==MouseEvent.BUTTON1 && flag == false){
System.out.println("左键 ");
}
if(e.getButton()==MouseEvent.BUTTON3 && flag == false){
System.out.println("右键 ");
}
}
});
原理是:1、在鼠标按下时判断 左右键同时按下了,并设置一个标识。
2、在鼠标释放时判断是点击了左键还是右键,加上一个标识的判断。
3、这样就能区分出是点了点击个释放的顺序,如果都在按下或者释放的同一个方法中,执行的先后顺序就没有保障了。
4、亲自测试一下会更深刻的理解。