如何旋转标签

Vic*_*azi 3 javafx javafx-8

在JavaFX 8中,我想指定用于旋转Label的css,以便从左到右而不是文本从下到上.

我怎样才能做到这一点?

Jam*_*s_D 6

调用setRotate标签以围绕其中心旋转。

要允许布局窗格在旋转后正确测量标签的边界,请将其包裹在一个Group:

import javafx.application.Application;
import javafx.geometry.Pos;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.stage.Stage;

public class RotatedLabelTest extends Application {

    @Override
    public void start(Stage primaryStage) {
        Label label1 = new Label("Hello");
        Label label2 = new Label("World");

        label1.setRotate(-90);
        Group labelHolder = new Group(label1);

        HBox root = new HBox(5, labelHolder, label2);
        root.setAlignment(Pos.CENTER);

        Scene scene = new Scene(root, 250, 150);
        primaryStage.setScene(scene);
        primaryStage.show();

    }

    public static void main(String[] args) {
        launch(args);
    }
}
Run Code Online (Sandbox Code Playgroud)


jew*_*sea 6

任何节点都可以使用-fx-rotatecss属性通过CSS设置旋转样式.

这是以度为单位的旋转角度.零度是在3点钟(直接向右).角度值顺时针正.轮换是以中心为中心的.

因此,在您的代码或FXML中,您可以:

label.setStyle("vertical");
Run Code Online (Sandbox Code Playgroud)

在您的css样式表中,您可以定义:

.vertical { -fx-rotate: -90; }
Run Code Online (Sandbox Code Playgroud)

另请注意James_D的回答建议,即在执行布局边界计算时将标签包装在一个组中以考虑轮换.