在我的ScalaFX项目中,我想为用户创建一个单独的帮助页面,在该页面中,他/她可以单击一个主题,该主题使指示出现在可单击的主题旁边。
问题是,当我为帮助页面创建新场景时,无论做什么,我都无法移动Map
。它位于TextFlow
顶部的同一位置。参见图片以供参考。
ListView
我想知道的是如何定位列表视图旁边的文本?目的是使说明出现在此处。我的计划是使用
helpMenu.onAction = (ae: ActionEvent) => {
val helpStage = new Stage()
helpStage.setTitle("A wild help stage appears!")
val helpScene = new Scene(scene.width.get * 0.6, scene.height.get * 0.8) {
val listView = new ListView(List.tabulate(3) { n => "Option " + (n + 1) })
val text1 = new Text("This is fine\n*zips coffee*\nThis is all fine.")
val textFlow = new TextFlow(text1)
/*
* Nothing below changes where the text appears in the new scene.
*/
textFlow.layoutX <== listView.width.get
textFlow.alignmentInParent_=(Pos.TOP_RIGHT)
textFlow.alignmentInParent_=(Pos.BASELINE_CENTER)
text1.alignmentInParent_=(Pos.BASELINE_CENTER)
listView.prefHeight <== scene.height.get * 0.4
content.addAll(listView, textFlow)
}
helpStage.setScene(helpScene)
helpStage.show()
helpScene.listView.onMouseClicked = (le: MouseEvent) => {
val item = helpScene.listView.selectionModel.apply.getSelectedItem
}
}
为此目的,因为我们可以轻松确定列表中单击的内容。
答案 0 :(得分:2)
我认为这里的问题是,您需要向容器中添加ListView
和TextFlow
元素,以控制它们的布局。在下面的代码中,我为此使用了HBox
,这使两个并排放置。 (对于较早的 JavaFX 2版本,scalafx.scene.layout
软件包中还有其他选项,例如VBox
,BorderPane
等。This tutorial,可能有助于您更好地理解该主题。)
此后,我不清楚您要实现的目标,但是我认为您要尝试的是根据{{ 1}}被选中。如果真是这样,那么以下示例通过使用选择更改来触发TextFlow内容更改来解决此问题。 (如果您不是这样想的,您可以详细说明您的要求吗?)
此外,我还简化了一些代码,以使用 ScalaFX 的属性(与 JavaFX 的 getters和setters 相对)。
TextFlow