【发布时间】:2021-11-19 03:50:38
【问题描述】:
我正在使用 JavaFX 构建一个程序,其中我需要一个接一个地显示文本行。与 WhatsApp 等消息传递应用程序类似,我需要将一些文本行向右对齐,而将其他文本行向左对齐,如下所示:
我第一次尝试使用 TextArea,但我只能将所有文本对齐到一个方向或另一个方向。此外,动态地在 TextArea 中添加和删除文本是一件很痛苦的事情。
这导致我尝试改用 TextFlow,它利用 Text 节点,我可以控制其各个属性,以及根据需要添加和删除。然而,在使用 TextFlow 时,我仍然无法将节点对齐到 Flow 区域的右侧。 我尝试同时使用 setStyle() 和 setTextAlignment() 方法,但无济于事。
TL,DR:如何控制 JavaFX TextFlow 中 Text 节点的属性,以使某些节点向右对齐,而其他节点向左对齐?
非常感谢
【问题讨论】:
-
GridPane 听起来是您的完美布局管理器。您可以将右对齐的框偏移一列或多列以满足您的需要。有关 GridPane 的信息,请参见此处:docs.oracle.com/javafx/2/api/javafx/scene/layout/GridPane.html 或者使用 Flow 布局,您可能需要将文本包装在另一个组件中,该组件可以正确对齐文本并在左/右大小上使用一些填充。
-
如果文本序列确实是像 WhatsApp 这样的对话,那么我将使用
ListView和自定义ListCell实现,根据需要对齐文本组。每条单独的消息都将是ListView中自己的项目。 -
这能回答你的问题吗? JavaFx ListView for chat application
标签: java user-interface javafx