如何旋转标签



在JavaFX 8中,我想指定css来旋转标签,这样文本就不会从左到右,而是从下到上。

我该怎么做?

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

这是以度为单位的旋转角度。零度在3点钟(正右边)。角度值为正顺时针方向。旋转是围绕中心的。

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

label.setStyle("vertical");

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

.vertical { -fx-rotate: -90; }

还要注意James_D的回答建议,在执行布局边界计算时,将标签包装在一个组中以考虑旋转。

调用标签上的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);
    }
}

您可以通过按照以下代码指定旋转度来轻松设置标签的旋转:

label.setRotate(45)

例如45度。

如果你想在一些操作之后设置它,也就是说,在标签显示在用户界面中之后,你可以使用

Platform.runLater()lambda表达式。即

Platform.runLater(()->
   label.setRotate(45);
  )

最新更新