2016-11-27 1 views
0

In meinem Programm nimmt ein Textfeld Wert vom Benutzer und zeigt den Wert im Fenster an. Aber ich möchte die Texte auf der rechten Seite des Fensters zeigen.So ändern Sie die Textposition im Fenster in javaFX

Ich benutzte setTextAlignment (TextAlignment.RIGHT) aber es zeigt immer noch Texte in der linken (ich bin nicht sicher, ob es die richtige Methode ist, um anzurufen).

Wie kann ich es lösen?

public class ChatBox extends Application{ 

    final ScrollPane sp = new ScrollPane(); 
    public void start(Stage stage){ 
    TextFlow textFlow = new TextFlow(); 
    textFlow.setPadding(new Insets(10)); 
    textFlow.setLineSpacing(10); 
    TextField textField = new TextField(); 
    textField.setPrefSize(50,30); 
    Button button = new Button("Send"); 
    button.setPrefSize(80,30); 
    VBox container = new VBox(); 
    VBox box = new VBox(); 
    box.getChildren().addAll(sp,textFlow); 
    container.setPadding(new Insets(10)); 
    container.getChildren().addAll(box, new HBox(textField, button)); 
    VBox.setVgrow(sp, Priority.ALWAYS); 
    VBox.setVgrow(textFlow, Priority.ALWAYS); 

textField.prefWidthProperty().bind(container.widthProperty().subtract(button.prefWidthProperty())); 

textField.setOnKeyPressed(e -> { 
    if(e.getCode() == KeyCode.ENTER) { 
     playSound(); 
     button.fire(); 
    } 
}); 
button.setOnAction(e -> { 
    Text text; 
    if(textFlow.getChildren().size()==0){ 
     text = new Text(textField.getText()); 
     text.setTextAlignment(TextAlignment.RIGHT); 
     String str = textField.getText(); 
     System.out.println(str); 
    } else { 
     text = new Text("\n" + textField.getText()); 
     text.setTextAlignment(TextAlignment.RIGHT); 
    } 
    textFlow.getChildren().add(text); 
    textField.clear(); 
    textField.requestFocus(); 
}); 
VBox vb = new VBox(); 
vb.getChildren().addAll(textFlow); 
sp.setVmax(440); 
sp.setPrefSize(400, 300); 
sp.setContent(vb); 
sp.vvalueProperty().bind((ObservableValue<? extends Number>) vb.heightProperty()); 
Scene scene = new Scene(container, 400, 300); 
stage.setScene(scene); 
stage.setTitle("jui"); 
stage.show(); 
} 
} 

Antwort

0

Einstellung der textAlignment Eigenschaft für einzelne Kinder nicht funktioniert, da die Ausrichtung der TextFlow immer verwendet wird.

Sie benötigen die textAlignment Eigenschaft des TextFlow einzustellen:

textFlow.setTextAlignment(TextAlignment.RIGHT); 
Verwandte Themen