【发布时间】:2018-08-20 17:47:05
【问题描述】:
我目前正在使用 JavaFX 的 Text 和 TextFlow 布局,我需要弄清楚如何将 Text 节点置于 TextFlow 的中心。
如下图所示,我添加了一些ImageView,以模拟我要添加的表情符号。
问题是,它们的对齐方式不同。当表情符号居中时,文本停留在底部。
绿色边框线代表TextFlow的边框,蓝色边框线代表Text的边框。
我已经尝试将 Text 的 textOrigin 属性设置为 CENTER,但在我的情况下它不会改变任何东西。将textAlignment 设置为CENTER 也不起作用。
这是我的代码摘录:
public CChatMessage(String senderName, String messageText)
{
this.sender = new Label(senderName);
this.sender.setTextAlignment(TextAlignment.CENTER);
this.sender.setFont(Font.font("Verdana", FontWeight.EXTRA_BOLD, 14));
this.message = new Text(messageText);
this.message.setTextAlignment(TextAlignment.CENTER);
this.message.setTextOrigin(VPos.CENTER);
this.setEffect(new DropShadow());
this.setAlignment(Pos.CENTER);
this.setPadding(new Insets(0, 10, 10, 10));
TextFlow messagePane = new TextFlow();
messagePane.setStyle("-fx-border-color: green");
messagePane.setTextAlignment(TextAlignment.CENTER);
Image smileyImage = new Image("/resources/smiley.png");
messagePane.getChildren().addAll(this.message, new ImageView(smileyImage), new ImageView(smileyImage), new ImageView(smileyImage),
new ImageView(smileyImage), new ImageView(smileyImage), new ImageView(smileyImage));
if(!senderName.equals(""))
{
CChatMessage.setMargin(messagePane, new Insets(10, 0, 0, 0));
this.message.setFont(Font.font("Calibri", FontWeight.SEMI_BOLD, 18));
this.getChildren().addAll(this.sender, messagePane);
}
else
{
this.setPadding(new Insets(5, 5, 5, 5));
message.setFont(Font.font("Verdana", FontWeight.EXTRA_BOLD, 11));
this.getChildren().add(messagePane);
}
}
【问题讨论】:
标签: layout text javafx textflow