【问题标题】:How can I rotate a label如何旋转标签
【发布时间】:2014-09-10 17:23:57
【问题描述】:

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

我该怎么做?

【问题讨论】:

    标签: javafx javafx-8


    【解决方案1】:

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

    这是旋转的角度,以度为单位。零度在 3 点钟方向(直接向右)。角度值顺时针为正。旋转是关于中心的。

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

    label.setStyle("vertical");
    

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

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

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 谢谢,你知道有没有这方面的css吗?
      • 不,我不相信 rotate 属性是可设置样式的。
      • 感谢您的定位。 Group 的事情似乎没有解决它
      • 创建一个新问题并包含一个MCVE 用于定位。
      • 啊,它很有风格。查看jewelsea的答案,我认为这比这个更好......
      猜你喜欢
      • 2019-08-25
      • 2013-10-29
      • 2016-07-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-21
      • 2021-04-09
      • 1970-01-01
      相关资源
      最近更新 更多