2016-11-23 7 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

Вы можете установить TextAlignement от TextFlow но я не думаю, что мы могли бы иметь два выравнивания в том же контейнере, однако, вы можете использовать хитрый способ обойти эту проблему с помощью меток & 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; 
} 

Почему Этикетка? Этот узел работает так же, как и узел «Текст», но преимущество заключается в том, что мокрый может изменять размер фона.

Почему VBox? необязательно, даже если я думаю TextFlow лучше подходит для текстовых узлов. Также для позиционирования VBox больше подходит для классифицированных элементов сверху донизу. панель для общения. Удачи !