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

时间:2011-07-29 18:01:54

标签: 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)
    }
  }
}

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

2 个答案:

答案 0 :(得分:6)

也许那样?

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
  }
}

BTW,SimpleGUIApplication已被弃用

答案 1 :(得分:1)

MouseClicked事件的属性为clicks,如果是双击,则应为2。如果你很好奇,请查看java.awt.event.MouseEvent原始来源。