在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);
)