EditDone不起作用 - 在scala中摆动

时间:2014-01-27 18:58:06

标签: swing scala

它可能很容易解决,但由于我是scala的新手,我甚至不知道我不知道的是什么。

我必须编写一个简单的应用程序,在输入“Enter”键后将输入文本重写为输出文本字段。

object Main扩展SimpleSwingApplication {

def top = new MainFrame {
  title = "Text Fields"
  preferredSize = new Dimension(200, 90)
  val inText = new TextField(10)
  val outText = new TextField(10)
  outText.editable = false
  val inLabel = new Label("input")
  val outLabel = new Label("output")
  inText.listenTo(inText.keys)
  inText.reactions += {
    case EditDone(e) => println("aaaa") ; outText.text = e.text
  }
  contents = new FlowPanel(){ 
    contents += inLabel
    contents += inText
    contents += outLabel
    contents += outText

  }
}

}

由于某种原因,EditDone事件无法启动。 KeyPressed事件应该结束我知道我可以检查它是否是'输入'键但是因为我的案例有特殊事件我希望我可以使用它。

1 个答案:

答案 0 :(得分:2)

好的我明白了 -

listenTo方法参数必须是我们想要监听的组件。

所以inText文本字段必须听...它自己。

def top = new MainFrame {
  title = "Text Fields"
  preferredSize = new Dimension(200, 90)
  val inText = new TextField(10)
  val outText = new TextField(10)
  outText.editable = false
  val inLabel = new Label("input")
  val outLabel = new Label("output")
  inText.listenTo(inText)   //Changed from inText.keys to inText
  inText.reactions += {
    case EditDone(e) => println("aaaa") ; outText.text = e.text
  }
  contents = new FlowPanel(){ 
    contents += inLabel
    contents += inText
    contents += outLabel
    contents += outText

  }
}