gpt4 book ai didi

java - 如何获取 JavaFX 标签的宽度和高度?

转载 作者:行者123 更新时间:2023-11-30 08:00:54 27 4
gpt4 key购买 nike

显然有两个方法getWidthgetHeight,但如果我们只是更改Label文本值,它们会返回旧的标签​​大小。

例如,在此代码中,背景大小未正确调整:

Label speedLabel = new Label();
Rectangle backgroundLabel = new Rectangle();

// Some initialization

// Change the label text
speedLabel.setText(connection.getSpeed_bps()); // Sets a bigger number

// Adjust the background
backgroundLabel.setWidth(speedLabel.getWidth());
backgroundLabel.setHeight(speedLabel.getHeight());

初始化后,我的Label是这样的:

enter image description here

经过文字更改和背景调整后,我的Label是这样的:

enter image description here

我看过这篇文章,但它推荐了一种已弃用的方法:

How to get label.getWidth() in javafx

最佳答案

返回“旧”尺寸的原因是,当您设置标签的 textProperty 时,标签实际上并未在 GUI 上更新,因此尺寸不会更改。

您可以监听LabelwidthPropertyheightProperty并在监听器中调整Rectangle的大小:

speedLabel.widthProperty().addListener((obs, oldVal, newVal) -> {
backgroundLabel.setWidth(newVal.doubleValue());
});

speedLabel.heightProperty().addListener((obs, oldVal, newVal) -> {
backgroundLabel.setHeight(newVal.doubleValue());
});

或者简单地使用属性之间的绑定(bind):

backgroundLabel.heightProperty().bind(speedLabel.heightProperty());
backgroundLabel.widthProperty().bind(speedLabel.widthProperty());

但是如果你只是想实现一个带有一些背景的Label,你实际上不需要一个Rectangle,只需要一些CSS - 你可以检查这个问题:FXML StackPane doesn't align children correctly

关于java - 如何获取 JavaFX 标签的宽度和高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38096641/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com