gpt4 book ai didi

swing - 右键单击按钮/Scala

转载 作者:行者123 更新时间:2023-12-04 08:48:31 24 4
gpt4 key购买 nike

我目前正在尝试使用 Scala 编写扫雷艇,但我找不到在按钮上单击鼠标右键的方法。

我已经在互联网上搜索了这样做的方法,但我绝对找不到。

如果有人可以帮助我,我将不胜感激:)

谢谢,

施尼普

(注意:Scala 对我来说是一门新语言,我不是 Java 用户,所以如果我的问题听起来很愚蠢,我很抱歉)

编辑:

我正在尝试查找(或实现)一个函数“ButtonClickedRight”,它可以收听右键单击按钮。

像这样

import scala.swing._
import scala._
import scala.swing.event._

object Right extends MainFrame with App {
title = ""
visible = true

val b = new button("")
listenTo(b)
reactions += {
case ButtonClicked(`b`) => *code*
case ButtonClickedRight(`b`) => *code*
}
}

编辑 2——

我想知道用户是否点击了按钮“1”。我遇到的问题是,当我单击标签而不是按钮时,此代码会打印“鼠标单击” + e.point+ 键入“+e.modifiers”。
object App extends SimpleSwingApplication {
lazy val ui = new GridPanel(2,1) {
contents += new Button("1")
contents += new Label("2")
listenTo(mouse.clicks)
reactions += {
case e: MouseClicked =>
println("Mouse clicked at " + e.point+" type "+e.modifiers)
}
}
def top = new MainFrame {
contents = ui
visible = true
preferredSize = new Dimension(500,500)
}
}

最佳答案

按钮事件通过特定发布者触发 .mouse.clicks .

import scala.swing._
import scala.swing.event._

object App extends SimpleSwingApplication {
lazy val ui = new GridPanel(2,1) {
val button = new Button("1")
contents += button
contents += new Label("2")
listenTo(button.mouse.clicks) // !
reactions += {
case evt @ MouseClicked(`button`, pt, _, _, _) =>
val which = evt.peer.getButton
if (which > 1) {
println(s"Mouse clicked at (${pt.x}; ${pt.y}) - button: $which")
}
}
}
lazy val top = new MainFrame {
contents = ui
size = new Dimension(500,500)
}
}

请注意,至少在 Linux 上,我的右键是数字 3 而不是 2。您也可以使用 triggersPopup标志,但是您必须确保同时监视 MousePressedMouseReleased ,因为这个标志是平台相关的。

关于swing - 右键单击按钮/Scala,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28659031/

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