代码之家  ›  专栏  ›  技术社区  ›  oxbow_lakes

scala-swing事件框架-我应该在哪里添加我的反应器?

  •  6
  • oxbow_lakes  · 技术社区  · 16 年前

    我正在尝试捕捉鼠标点击,即使在 Table (这将导致弹出窗口显示)。桌子在一个 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)
      } 
    }
    

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

    1 回复  |  直到 16 年前
        1
  •  5
  •   oxbow_lakes    16 年前

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

    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)
        } 
      }
    }
    
    推荐文章