Scala Swing事件框架 - 我在哪里添加我的反应器?

oxb*_*kes 6 events scala scala-swing

我试图抓住一个鼠标点击即可Table(这应该会导致弹出窗口显示).桌子位于a ScrollPane里面(反过来)Panel.我已经添加了对所有类的反应,但我似乎永远不会真正得到一个点击事件被捕获!

class MyPanel extends GridBagPanel {
  val gbc = new GridBagContraints( ... )

  add(new ScrollPane {
    reactions += {
      case MouseClicked(src, point, mod, clicks, pops) =>
        println("Scroll pops: " + pops)
    } 

    viewportView = new Table {
      reactions += {
        case MouseClicked(src, point, mod, clicks, pops) =>
          println("Table pops: " + pops)
      } 

      ...
    }

  }, gbc)

  reactions += {
    case MouseClicked(src, point, mod, clicks, pops) =>
      println("Panel pops: " + pops)
  } 
}
Run Code Online (Sandbox Code Playgroud)

无论我在哪里点击,都没有打印出来.我究竟做错了什么?

oxb*_*kes 5

好的 - 你必须正确的事情:

class MyPanel extends GridBagPanel {
  val gbc = new GridBagContraints( ... )

  val table = new Table { ... }

  add(new ScrollPane {

    viewportView = table
  }

  }, gbc)

  listenTo(table.Mouse.clicks) //THIS LINE IS IMPORTANT :-)

  reactions += {
    case MouseClicked(`table`, point, mod, clicks, pops) =>
      println("Panel pops: " + pops)
    } 
  }
}
Run Code Online (Sandbox Code Playgroud)