0

我是 javafx 的新手。

我正在尝试构建一个聊天面板显示消息的信使。我想对齐消息,就像我自己的消息在左侧,其他消息在右侧。

为了显示消息,我在添加文本的地方使用 TextFlow。但是对齐不起作用。

TextFLow tf=new TextFlow();
Text t1= new Text("Hi");
Text t2= new Text("Hello");
t1.setTextAlignment(TextAlignment.RIGHT);
t2.setTextAlignment(TextAlignment.LEFT);
tf.getChildren().addAll(t1,t2);

但是对齐不起作用。两个文本都在左边。我该怎么办?

4

1 回答 1

0

您可以从 TextFlow 设置 TextAlignement,但是,我认为我们不能在同一个容器中有两个对齐方式,但是,您可以通过使用 Labels 和 VBox 来解决这个问题:

private VBox Chat(){

    VBox chat = new VBox();
    chat.setPrefSize(400, 400);
    chat.setStyle("-fx-background-color:#333333;");

    Label txt1 = new Label("Text1");
    txt1.setTextFill(Color.WHITE); 
    txt1.setPrefWidth(400); 
    txt1.setAlignment(Pos.CENTER_LEFT);

    Label txt2 = new Label("Text2");
    txt2.setTextFill(Color.WHITE); 
    txt2.setPrefWidth(400); 
    txt2.setAlignment(Pos.CENTER_RIGHT);  

    chat.getChildren().addAll(txt1,txt2);

    return chat;
}

为什么要贴标签?此节点的工作方式与 Text 节点相同,但优点是wet 可以调整背景大小。

为什么选择VBox?是可选的,即使我认为TextFlow更适合文本节点。也是为了定位,VBox更适合分类项目从上到下的聊天面板。祝你好运 !

于 2016-11-23T16:37:17.157 回答