加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

事件 – 扩展面板中的Scala Swing反应

发布时间:2020-12-16 18:15:05 所属栏目:安全 来源:网络整理
导读:好吧,简单的问题:我有一个扩展 scala.swing.Panel的单例对象,我想让它在简单的鼠标点击上做出反应.但是……好吧,它不起作用.由于 Scala是一种新语言,因此找到特定问题的信息并不容易.也许你可以帮忙: import scala.swing._import scala.swing.event._impor
好吧,简单的问题:我有一个扩展 scala.swing.Panel的单例对象,我想让它在简单的鼠标点击上做出反应.但是……好吧,它不起作用.由于 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你可以听,如果你需要跟踪鼠标移动事件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读