Фреймворк Scala Swing - где я могу добавить свои реакторы? - PullRequest
6 голосов
/ 02 июня 2009

Я пытаюсь поймать щелчок мышью даже на 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 Ответ

5 голосов
/ 02 июня 2009

ОК - Вы должны прослушать правильную вещь:

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)
    } 
  }
}
...