如何识别Scala中的鼠标点击?

Dav*_*zek 3 scala double-click

我正在写一个小的GUI程序.一切正常,除了我想要识别鼠标双击.但是,我根本无法识别鼠标点击(如此),但我可以单击按钮并从列表中选择代码.

以下代码改编自Ingo Maier的"The scala.swing package":

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

object MouseTest extends SimpleGUIApplication {
  def top = new MainFrame {
    listenTo(this.mouse) // value mouse is not a member of scala.swing.MainFrame
    reactions += {
      case e: MouseClicked =>
        println("Mouse clicked at " + e.point)
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试了多种变体:鼠标与鼠标,SimpleSwingApplication,从java.awt.event等导入MouseEvent.错误信息足够清晰 - MainFrame中没有值鼠标 - 所以,它在哪里呢?救命!

om-*_*nom 7

也许那样?

object App extends SimpleSwingApplication {
  lazy val ui = new Panel {
    listenTo(mouse.clicks)
    reactions += {
      case e: MouseClicked =>
        println("Mouse clicked at " + e.point)
    }
  }
  def top = new MainFrame {
    contents = ui
  }
}
Run Code Online (Sandbox Code Playgroud)

BTW,SimpleGUIApplication已被弃用

  • 是的,这有效 - 谢谢!总结一下:'鼠标'在Component中定义.Panel是一种Component,因此可以在Panel中识别鼠标点击.MainFrame不是Component的子类(也不是Frame),因此无法直接在MainFrame中识别鼠标点击.它必须包含一个Panel.我还不清楚为什么"case MouseClicked(`myListView`)"是非法的,因为ListView是一个组件,但我现在可以双击ListView元素. (2认同)