簡體   English   中英

JavaFX-場景中居中的文本

[英]JavaFX - centered Text in Scene

我有一個JavaFX TextSceneGroup

Text waitingForKey
Scene scene
Group root

我有一個字符串“ waitingForKeyString ,該字符串要添加到“ waitingForKey並且要有一個中心對齊。

問題是有時字符串有兩個句子,但我無法對齊

 String waitingForKeyString= " Level 2 \n\n" + "Press ENTER to start a new game";

要么

String waitForKeyString =“”按下ENTER \\ n“ +”開始游戲“,messageString =”“;

然后

Scene scene = new Scene(root,SCREEN_WIDTH, SCREEN_HEIGHT, Color.BLACK);
waitingForKey.setText(waitingForKeyString);
root.getChildren().add(waitingForKey);

那么我怎樣才能使它居中呢? 當我嘗試對齊第一個waitingForKeyString我銷毀了第二個`waitingForKeyString和Vicecersa。

您可以將StackPane用作Scene根,因為它具有alignmentProperty

如果你想單獨地對准NodesStackPane可以使用public static void setAlignment(Node child, Pos value)的方法StackPane

示例(一個文本在CENTER中對齊,另一個在TOP LEFT中對齊)

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        try {
            StackPane root = new StackPane();
            Text text2 = new Text("I will be aligned TOPLEFT");
            Text text = new Text(" Level 2 \n\n" + "Press ENTER to start a new game");
            text.setTextAlignment(TextAlignment.CENTER);
            root.getChildren().addAll(text2, text);
            StackPane.setAlignment(text2, Pos.TOP_LEFT);
            StackPane.setAlignment(text, Pos.CENTER);


            Scene scene = new Scene(root, 400, 400);
            primaryStage.setScene(scene);
            primaryStage.show();
        } catch(Exception e) {
            e.printStackTrace();
        }
    }

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

Text指定TextAlignment.CENTER並使用“默認為Pos.CENTER ”這樣的布局,如StackPane

圖片

import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.layout.StackPane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.Text;
import javafx.scene.text.TextAlignment;
import javafx.stage.Stage;
/**
 * @see http://stackoverflow.com/a/37541777/230513
 */
public class Test extends Application {

    @Override
    public void start(Stage primaryStage) {
        Text waitingForKey = new Text("Level 2 \n\n" + "Press ENTER to start a new game");
        waitingForKey.setTextAlignment(TextAlignment.CENTER);
        waitingForKey.setFont(new Font(18));
        waitingForKey.setFill(Color.ALICEBLUE);
        StackPane root = new StackPane();
        root.getChildren().add(waitingForKey);
        Scene scene = new Scene(root, 320, 240, Color.BLACK);
        primaryStage.setTitle("Test");
        primaryStage.setScene(scene);
        primaryStage.show();
    }

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM