6

我什至试图在 a 上捕捉鼠标点击Table(这应该会导致显示弹出窗口)。该表在 a 内ScrollPane,而(又)在 a 内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)
  } 
}

无论我在哪里单击,都不会打印任何内容。我究竟做错了什么?

4

1 回答 1

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)
    } 
  }
}
于 2009-06-02T09:30:12.557 回答