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

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

宗政卓
2023-03-14

显然,有两个方法getWidthgetHeighttext值,它们会返回旧标签大小。

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

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是这样的:

在文本更改和背景调整之后,我的< code >标签是这样的:

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

如何在爪哇fx中获取标签

共有2个答案

梅玉堂
2023-03-14

你可以用两种方法来做。

方法1:将标签的背景颜色指定为矩形的背景颜色。因此,无论 Label 的大小如何,背景矩形都将相应地采用宽度。

label.setStyle("-fx-background-color:grey; -fx-padding:5");

方法2:根据标签大小绑定矩形的大小

rectangle.prefWidthProperty(label.widthProperty());
rectangle.prefHeightProperty(label.heightProperty());
葛泳
2023-03-14

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

您可以监听Label的widthProperty和heightProperty,并在侦听器中调整Rectangle的大小:

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

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

或者直接在属性之间使用绑定:

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

但是如果你只是想实现一个带有一些背景的标签,你实际上不需要一个矩形,只需要一些CSS-你可以检查这个问题:FXML StackPane不能正确对齐子级

 类似资料:
  • 我是JavaFX的新手,我正在编写一个简单的登录应用程序,我想在我的web浏览器中启动它。 我如何获得web浏览器的宽度和高度?是否有一些对象用于此目的,或一个方法,我希望能够调整应用程序的大小,每当浏览器的大小改变。

  • 如何在下面的屏幕截图中获得由红色附件突出显示的部分的宽度? 我试过了 是刻度的列表,但没有任何返回刻度宽度的方法,例如或任何此类方法。

  • 我正在用JavaFX和JavaFX Scene Builder开发软件。 我有一个有2列的网格窗格。实际上,在每个单元格中都有标签。在表的第一列中,标签内的文本是默认常量,在第二列中,文本可以更改。 编辑: 多亏了@Fabian issues,这才解决了最初的问题。在addiction中,需要将每个元素的fx:id设置到场景构建器中。

  • 问题内容: 除了使用ImageIO.read来获取图像的高度和宽度外,还有其他方法吗? 因为我遇到了锁定线程的问题。 此错误仅在Sun应用服务器上发生,因此我怀疑这是Sun错误。 问题答案: 这很简单方便。

  • 问题内容: 为什么下面的代码返回高度:-1,这意味着高度未知。如何获得图像的高度? 问题答案: 使用ImageIO.read(URL)或ImageIO.read(File)代替。加载时它将阻塞,返回后将知道图像的宽度和高度。 例如 或者,MediaTracker向由异步加载的映像中添加A ,Toolkit然后等待其完全加载。

  • 问题内容: 是否可以在锚标签上设置像素的宽度和高度?我希望锚标签具有背景图像,同时将文本保留在锚内。 问题答案: 您需要制作锚点或,然后它将接受宽度和高度值。