首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何获得标签的大小,然后再进行布局?

如何获得标签的大小,然后再进行布局?
EN

Stack Overflow用户
提问于 2015-06-22 15:11:28
回答 1查看 3.5K关注 0票数 2

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

我试着把标签放在一个HBox中,然后得到它的大小,或者得到HBox的大小,没有任何结果。我也尝试过使用.label.getBoundsInLocal().getWidth()。

进口javafx.scene.control.Label;进口javafx.scene.layout.HBox;进口javafx.application.Application;进口javafx.scene.Scene;

代码语言:javascript
运行
复制
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();
    }
}
EN

回答 1

Stack Overflow用户

发布于 2015-06-22 16:37:42

从JavaFX 8开始,您要寻找的方法是applyCss()

正如JavaDoc所说:

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

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

代码语言:javascript
运行
复制
@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

注意,我已经为Group更改了Group,因为:

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

如果使用HBox,还需要设置场景的维度:

代码语言:javascript
运行
复制
@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

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30983584

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档