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 を設定することはできますが、同じコンテナー内で 2 つの配置を行うことはできないと思いますが、ラベルと 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 に答える