无法在新场景中移动TextFlow

时间:2019-03-09 14:57:07

标签: java scala javafx scalafx

在我的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 } }

为此目的,因为我们可以轻松确定列表中单击的内容。

enter image description here

1 个答案:

答案 0 :(得分:2)

我认为这里的问题是,您需要向容器中添加ListViewTextFlow元素,以控制它们的布局。在下面的代码中,我为此使用了HBox,这使两个并排放置。 (对于较早的 JavaFX 2版本,scalafx.scene.layout软件包中还有其他选项,例如VBoxBorderPane等。This tutorial,可能有助于您更好地理解该主题。)

此后,我不清楚您要实现的目标,但是我认为您要尝试的是根据{{ 1}}被选中。如果真是这样,那么以下示例通过使用选择更改来触发TextFlow内容更改来解决此问题。 (如果您不是这样想的,您可以详细说明您的要求吗?)

此外,我还简化了一些代码,以使用 ScalaFX 的属性(与 JavaFX getters和setters 相对)。

TextFlow