gpt4 book ai didi

java - MouseEvent 怪异

转载 作者:行者123 更新时间:2023-12-01 16:41:48 25 4
gpt4 key购买 nike

我正在尝试为单元测试创​​建带有某些修饰符的 MouseEvent。我使用的是 J2SE,以下代码无法通过:

public void testMouseEventProblem() {
MouseEvent event = new MouseEvent(new JPanel(), 1, System.currentTimeMillis(),
InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK, 1,1, 0, false);

assertEquals(InputEvent.CTRL_DOWN_MASK | InputEvent.ALT_DOWN_MASK, event.getModifiers());
}

它提示说“预期为 640,但实际为 10”

发生什么事了?

最佳答案

它在内部转换为 ALT_MASK 和 CTRL_MASK 常量 (8 + 2)

它发生在 JDK 6 的 java.awt.event.InputEvent:405

/**
* Returns the modifier mask for this event.
*/
public int getModifiers() {
return modifiers & (JDK_1_3_MODIFIERS | HIGH_MODIFIERS);
}

尝试getModifiersEx():442:

public int getModifiersEx() {
return modifiers & ~JDK_1_3_MODIFIERS;
}

由于 ALT_DOWN_MASK 等是 Java 1.3 之后引入的扩展修饰符

证明:

public class MouseEvt {
public static void main(String[] args) {
MouseEvent event = new MouseEvent(new JPanel(), 1, System
.currentTimeMillis(), InputEvent.CTRL_DOWN_MASK
| InputEvent.ALT_DOWN_MASK, 1, 1, 0, false);

System.out.printf("%d - %d%n", InputEvent.CTRL_DOWN_MASK
| InputEvent.ALT_DOWN_MASK,
event.getModifiersEx());
}
}

返回 640 - 640

关于java - MouseEvent 怪异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1145643/

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