当前位置: 首页 > 知识库问答 >
问题:

一个标签还没铺出来怎么弄尺寸

洪河
2023-03-14

我读了这个关于如何实现这一点的老答案。但是,由于它涉及使用impl_processCSS(boolean),这是一种现在已被弃用的方法,我认为我们需要更新答案。

我尝试过把标签放在一个HBox里面,然后得到它的大小,或者得到HBox的大小,但是没有任何运气。而且我也试过用. label.getBoundsInLocal()。getWidth()。

SSCCE:导入javafx.scene.control。标签导入javafx.scene.layout。HBox;导入javafx.application。应用导入javafx.scene.scene;

public class SSCCE extends Application{

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

    @Override
    public void start(Stage primaryStage) {
        HBox root = new HBox();
        Label label = new Label("foo");
        System.out.println(label.getWidth());

        Scene scene = new Scene(root);
        primaryStage.setScene(scene);
        primaryStage.show();
    }
}

共有1个答案

澹台逸明
2023-03-14

由于是JavaFX8,所以您要查找的方法是applyCss()

正如爪哇多克所说:

将样式应用于此节点及其子节点(如果有)。此方法通常不需要直接调用,但可以与Parent.layout()结合使用,以在下一个脉冲之前调整节点的大小,或者如果场景不在舞台中。

因此,您需要将节点放在容器中,而这个节点已经在场景中,并且还需要调用layout()

@Override
public void start(Stage primaryStage) {
    Group root = new Group();
    Label label = new Label("foo bla bla");
    root.getChildren().add(label);
    Scene scene = new Scene(root);

    root.applyCss();
    root.layout();
    System.out.println(label.getWidth());

    primaryStage.setScene(scene);
    primaryStage.show();

}

输出:17.818359375

注意,我已将HBox更改为Group

a组将在布局传递期间将其托管的可调整大小的子级“自动调整大小”为其首选大小,以确保区域和控件在其状态更改时正确调整大小

如果使用< code>HBox,还需要设置场景的尺寸:

@Override
public void start(Stage primaryStage) {
    HBox root = new HBox();
    Label label = new Label("foo");
    root.getChildren().add(label);
    Scene scene = new Scene(root,100,20);

    root.applyCss();
    root.layout();
    System.out.println(label.getWidth());

    primaryStage.setScene(scene);
    primaryStage.show();

}

现在输出为:18.0

 类似资料:
  • iframe标签怎么弄? 接口的路径后面拼接参数 这个接口的url是iframe的src 这个怎么弄 接口的路径后面拼接参数 这个接口的url是iframe的src这个怎么弄?

  • 这几天在学dart和flutter,真的发现dart和js一模一样,知道google为了取代js才有开发出了dart这个语言,但有一个问题有点不明白,google为什么要再去弄一个本来就有的语言?为了取代js弄出来dart,为了取代java弄出来golang,他们为什么要这样呢? 上面的问题有点想不明白,有懂的吗?

  • 渲染出来的标签 怎么添加@click 我在红框里直接添加点击事件报错

  • 某些配置单元派生工具(如Hadoop)需要一个表名,用于SQL查询以获取当前时间: 如果任何表格都可以,可以从“show tables”中获得一个。但这需要另一个查询,这是我试图避免的。 是否有通用/系统表名可用于此操作?或者在没有已知表名的情况下查询时间的另一种方法? (我发现需要FROM子句的配置单元实现是Cloudera、Hadoop和Horton。如果使用FROM子句,Presto和Ath

  • 忘记 密码 amh amh-7.0 admin change_amh_password new_pass 提示下面的这个,怎么重新创建amh_uesr

  • 我有一个显示所有数值变量的历史图。我想为它们中的每一个添加x和y标签。这是可能的,还是我必须把它们都分解成微小的图形?