【问题标题】:Scala MouseEvent - How to know which button was pressed?Scala MouseEvent - 如何知道按下了哪个按钮?
【发布时间】:2011-04-11 16:08:51
【问题描述】:

我正在使用 scala swing 编写一个 scala 应用程序。每当单击鼠标时,我都可以收听MouseClicked 以得到通知,但是我怎么知道按下了哪个按钮。文档非常糟糕,所以我查看了MouseEvent 的Java 文档,它说可以从修饰符字段中检索密钥,所以我尝试输出scala MouseClicked 事件的修饰符字段,结果转out 为整数,0 表示左键单击,鼠标键 3 和鼠标键 4 键和 256 表示右键单击。

如果我只需要知道左击和右击之间的区别,它看起来就可以工作,但我可以确定所有修饰符都以这种方式工作吗?文档什么也没说,据我所知,修饰符可能会受到其他因素的影响,而不仅仅是按下了哪个鼠标按钮。我也想知道左键单击和鼠标按钮 3 和 4 之间的区别。我认为用户不希望他们执行与左键单击相同的操作。

在 scala 文档中有一个MouseButtonEvent,它可以用于任何事情吗?文档没有说明它的作用。

【问题讨论】:

    标签: swing scala scala-2.8


    【解决方案1】:

    您始终可以使用x.peer.getButton 来获取Java 映射(其中x 是您的Scala MouseClicked 事件)。 peer 几乎总是包含一个等效于 Scala 类的 Java ——在这种情况下确实如此。

    【讨论】:

    • 带有 scala 插件的 Eclipse 无法编译,当我在我的代码中有这个时:e.peer.BUTTON1 从我读过的内容来看,我应该能够访问我的 scala 代码中的静态字段.我做错了什么,还是应该换一个 IDE?
    • 你必须通过类来访问它们,而不是通过实例:if (e.peer.getButton == java.awt.event.MouseEvent.BUTTON1),例如。
    • 谢谢...我完全忘记了。
    猜你喜欢
    • 1970-01-01
    • 2022-08-18
    • 1970-01-01
    • 2021-10-08
    • 1970-01-01
    • 1970-01-01
    • 2021-06-25
    • 1970-01-01
    相关资源
    最近更新 更多