gpt4 book ai didi

java - 检测在 Swing 中单击生成的 MouseEvent 上的 Shift 修饰符

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:16:34 25 4
gpt4 key购买 nike

我正在使用 Java Swing 在 GUI 应用程序中处理一些 MouseEvent。

从现在开始我在 mousePressed 方法中分析鼠标事件,只是为了确定是否发生左键或右键单击。

我的代码是:

public void mousePressed(MouseEvent me) {
if (me.getModifiers == InputEvent.BUTTON1_DOWN_MASK){
//left click
}else if (me.getModifiers == InputEvent.BUTTON3_DOWN_MASK){
//right click
}

现在我的应用程序变得越来越复杂,我还需要检查鼠标左键单击时是否按下了 Shift 按钮。我想做这样的事情:

public void mousePressed(MouseEvent me) {
if (me.getModifiers == InputEvent.BUTTON1_DOWN_MASK && me.isShiftDown()){
//left click
}

现在这行不通了。特别是,如果我在按住 SHIFT 的同时单击左键,isShiftDown 会返回 true(正确。我期待如此),但现在似乎修饰符也发生了变化,并且与 BUTTON1_DOWN_MASK 的比较失败。

me.getModifiers == InputEvent.BUTTON1_DOWN_MASK //failed..modifiers are changed

我做错了什么?如何修复我的代码?

最佳答案

请注意,该方法称为 getModifier_s_(),带有一个“s”,因为它可以返回多个修饰符,使用按位“或”组合。从技术上讲,使用“==”是不正确的:您应该使用按位“&”,如下所示:

if ((me.getModifiers() & InputEvent.BUTTON1_DOWN_MASK) != 0) ...

然后您将响应那个修饰符,即使存在其他修饰符也是如此。

关于java - 检测在 Swing 中单击生成的 MouseEvent 上的 Shift 修饰符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5517674/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com