我一直在尝试将我最初用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
}
}
}
}
答案 0 :(得分:0)
在JavaFX中,创建Scene
时必须指定Parent
的根节点。 ScalaFX为Scene
分配Group
作为根节点提供默认承包商。在ScalaFX中Scene#content
是访问根节点子节点的快捷方式,默认情况下是Group
的子节点。
在您的情况下,由于Group
重新调整大小的行为,您不希望将Group
作为根节点。
您场景的根节点应该是您的BorderPane
,因此请将其分配到root
而不是content
:
scene = new Scene {
root = new BorderPane { ...
}
}