Как распознать щелчки мыши в Scala? - PullRequest
3 голосов
/ 29 июля 2011

Я пишу небольшую программу с графическим интерфейсом. Все работает, за исключением того, что я хочу распознавать двойной щелчок мышью. Однако я вообще не могу распознавать щелчки мыши (как таковые), хотя могу нажимать кнопки и выбирать код из списка.

Следующий код адаптирован из «пакета scala.swing» Инго Майера:

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, импорт MouseEvent из java.awt.event и т. Д. Сообщение об ошибке достаточно ясно - нет значения mouse в MainFrame - так, где оно тогда? Помогите!

Ответы [ 2 ]

6 голосов
/ 29 июля 2011

Может быть, так?

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

Кстати, SimpleGUIApplication устарела

1 голос
/ 29 июля 2011

Событие MouseClicked имеет атрибут clicks, который должен быть 2, если это был двойной щелчок.Посмотрите на java.awt.event.MouseEvent , если вам интересно.

...