TextArea在ScalaFx中展开场景时不增长

时间:2015-12-31 18:03:41

标签: scala textarea scalafx

我一直在尝试将我最初用Java编写的学校项目转换为使用ScalaFX的Scala转换为Scala。 GUI基本上是带有按钮和搜索输入的顶部栏,而栏的底部是TextArea,它将显示按钮的输出。 This是应用在启动时的样子。问题是当我用鼠标扩展舞台时,TextArea的大小保持不变。 Here就是一个例子。我尝试查找ScalaFX的具体帮助,但感觉就像那里的文档相当薄,所以我不得不把我的研究重点放在JavaFX上。我在这里发现了一篇关于使用HBox来扩展我的文本框的帖子,因为我用鼠标拉伸了舞台,但它看起来并没有起作用。使用鼠标拉伸舞台时,有没有办法让TextArea缩放?我已经在GUI下面添加了下面的HBox代码。

object SorcerersCave extends JFXApp{
  val informationText: TextArea = new TextArea()

  stage = new PrimaryStage {
      title = "Sorcerers Cave"
      val searchBy = new ComboBox[String](List("Index", "Name", "Type")){
        value = "Index"
      }
      val resizeableBox = new HBox(informationText){
        hgrow = Priority.Always
      }
      val searchInput = new TextField() {prefWidth = 100}
      val buttonPane = new FlowPane {
        hgap = 5
        children = Seq(new Button("Read") { onAction = handle { readFile }} ,
                       new Button("Display"){ onAction = handle { displayCave() }},
                       searchBy,
                       new Label("Search target:"),
                       searchInput,
                       new Button("Search"){ onAction = handle { search(searchInput.getText.toLowerCase.trim, searchBy.toString()) }}
        )
      }
      scene = new Scene {
        content = new BorderPane {
             top = buttonPane
             center = resizeableBox
        }
      }
  }
}

1 个答案:

答案 0 :(得分:0)

在JavaFX中,创建Scene时必须指定Parent的根节点。 ScalaFX为Scene分配Group作为根节点提供默认承包商。在ScalaFX中Scene#content是访问根节点子节点的快捷方式,默认情况下是Group的子节点。

在您的情况下,由于Group重新调整大小的行为,您不希望将Group作为根节点。

您场景的根节点应该是您的BorderPane,因此请将其分配到root而不是content

scene = new Scene {
  root = new BorderPane { ...
  }
}