2016-07-21 19 views
0

Ich habe gerade erst begonnen, JavaFX zu lernen, und ich bin wirklich verwirrt über den Textknoten. Der Text, den ich gemacht habe, wird nicht in der Mitte ausgerichtet sein. Ich habe versucht, eine Pane, GridPane und jetzt eine VBox zu verwenden. Hat das etwas damit zu tun? -fx-text-alignment: center; Aber das hat auch nicht funktioniert. Ich bin wirklich neu dazu. Vielen Dank für die Hilfe! Hier ist mein Code:Probleme beim Ausrichten von Text mit javaFX

 package dev.angarc.game; 

import javafx.application.Application; 
import javafx.scene.Scene; 
import javafx.scene.layout.VBox; 
import javafx.scene.text.Font; 
import javafx.scene.text.FontPosture; 
import javafx.scene.text.FontWeight; 
import javafx.scene.text.Text; 
import javafx.scene.text.TextAlignment; 
import javafx.stage.Stage; 

public class Game extends Application{ 

    public static void main(String[] args){ 
     launch(args); 
    } 

    @Override 
    public void start(Stage stage){ 

     VBox vbox = new VBox(); 

     // Component stuff 

     Text text = new Text("This Text Wont Align To The Center!"); 
     text.setFont(Font.font("Arial", FontWeight.NORMAL, FontPosture.REGULAR, 20)); 
     text.setTextAlignment(TextAlignment.CENTER); 

     // adding to the pane 
     vbox.getChildren().add(text); 

     // Stuff to set up the window. 
       stage.setScene(new Scene((vbox), 640, 430)); 
       stage.setTitle("Text Game"); 
       stage.setResizable(false); 
       stage.show(); 

    } 

} 
+1

aus dem [Text.setTextAlignment javadoc] (https://docs.oracle.com/javase/8/javafx/api/javafx/ verwenden scene/text/Text.html # setTextAlignment-javafx.scene.text.TextAlignment-): "Die Breite des Begrenzungsrahmens wird durch die breiteste Zeile definiert. Hinweis: Bei einer einzelnen Textzeile mit der Breite von der Knoten wird durch die Breite des Textes bestimmt, die Ausrichtung hat keine Auswirkung. " In der Antwort von Tomas erfahren Sie, wie Sie eine einzelne Textzeile in einem übergeordneten Layoutcontainer ausrichten können. – jewelsea

Antwort

1

Sie möchten Ihrem CONTAINER sagen, welche Ausrichtung zu verwenden.

Sie können die Ausrichtung von Knoten und Fenstern mithilfe der setAlignment() -Methode für die Fensterbereiche verwalten. Ausrichtungskonstanten sind in den Aufzählungstypen im Paket javafx.geometry verfügbar.

HBox hbox= new HBox(); 
hbox.setAlignment(Pos.CENTER);//The overall alignment of children within the hbox's width and height. 

Falls Sie wollen FXML

<VBox alignment="CENTER" prefHeight="200.0" prefWidth="100.0" BorderPane.alignment="CENTER"> 
     <children> 
      <Text strokeType="OUTSIDE" strokeWidth="0.0" text="Text" /> 
     </children> 
     </VBox> 
+1

Vielen Dank! es funktionierte! –