2016-11-23 38 views
0

我是javafx的新手。文本对齐在TextFlow上不起作用

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

要显示我正在使用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); 

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

回答

0

您可以从TextFlow的设置TextAlignement但是,我不认为我们可以有两个定位在同一容器中,但是,你可以用一个取巧的方法,通过使用标签&垂直框裙子这个问题:

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节点相同,但优点是可以调整背景的大小。

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