events - 扩展面板中的 Scala Swing react

标签 events swing scala

好吧,简单的问题:我有一个扩展 scala.swing.Panel 的单例对象,我想让它对简单的鼠标单击使用react。但是……好吧,这不起作用。由于 Scala 是一门新语言,因此查找特定问题的信息并不那么容易。也许你可以帮忙:

import scala.swing._
import scala.swing.event._
import java.awt.{Graphics2D, Color}

object GamePanel extends Panel {
  val map: TileMap = new TileMap(10, 10)({
    (x, y) =>
      if (x == y) new Wood
      else if (x == 5) new Water
      else new Grass
  })

  reactions += {
    case MouseClicked(src, pt, mod, clicks, pops) => {
      selectedTile = (pt.x / map.tw, pt.y / map.th)
      println("Clicked")
      repaint
    }
  }

  var selectedTile = (0, 0)

  override def paint(g: Graphics2D) = {
    map.draw(g)
    g.setColor(Color.red)
    g.drawRect(selectedTile._1 - 1, selectedTile._2 - 1, 33, 33)
  }
}

感谢您的聆听。

最佳答案

出于性能原因,Scala Swing 中默认不处理鼠标事件。 根据您的情况,您需要添加

listenTo(mouse.clicks)

到您的对象,但如果您需要跟踪鼠标移动事件,您还可以监听一个事件发布者mouse.moves

关于events - 扩展面板中的 Scala Swing react ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4110748/

相关文章:

python - 使用 Python 将字符串粘贴到 Gnome 中选定的文本字段中

android - 将信息从 EventListener 传回 Activity

jsf - 在primefaces中动态允许一定范围的日期

java - JButton 矩阵上的 Action 事件

java - 使用 Swing 显示 Java 系统属性

java - 选中jCheckBox1,取消选中jCheckBox2

scala - def * (def asterisk) 是什么意思?

scala - Spark - 功能警告

python - 如何处理按钮点击事件

java - Spark 结构化流 : converting row to json