swing – 右键单击??Button / Scala
发布时间:2020-12-16 08:52:58 所属栏目:安全 来源:网络整理
导读:我目前正在尝试使用 scala对扫雷进行编码,但我无法找到右键单击按钮的方法. 我已经在互联网上搜索了它的方法,但我当然无法找到它. 如果有人能帮助我,我会非常感激:) 谢谢, Schnipp (注意:Scala对我来说是一种新语言,我不是Java用户,所以如果我的问题听起来
我目前正在尝试使用
scala对扫雷进行编码,但我无法找到右键单击按钮的方法.
我已经在互联网上搜索了它的方法,但我当然无法找到它. 如果有人能帮助我,我会非常感激:) 谢谢, Schnipp (注意: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“type”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标志,但是你必须确保监视MousePressed和MouseReleased,因为这个标志是平台相关的. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |