JavaFX:如何在显示之前获取标签的宽度?

时间:2019-02-05 00:23:01

标签: user-interface javafx label dynamic-ui

在我的JavaFX应用程序中,用户登录,该应用程序检索有关该用户的数据。其中一项数据是他们的公司名称。应用程序必须调整文本以保持public enum Textures { Diffuse, SemiTransparent, Masked } // initialise the dictionary Dictionary<int, Textures> dict; dict[TextureConstants.Diffuse] = Textures.Diffuse; dict[TextureConstants.SemiTransparent] = Textures.SemiTransparent; dict[TextureConstants.Masked] = Textures.Masked; int someNumber = // ... if (dict.TryGetValue (someNumber, out var texture)) { // got one if (texture == Textures.Diffuse) // ... } 的宽度。

我有一个Label侦听器,用于调整textProperty()TextField的字体大小。宽度功能起作用。无论公司名称的长度如何,它都适合。但是,较小的文本会像Label的y坐标一样挤压起来:

enter image description here enter image description here 以强调为边界。顶部是适合宽度的外观。底部正确调整了字体大小,但没有相应地调整y坐标。

所以,我有两个想法,我也不知道该怎么做。

  • 找到一种方法来设置Label的{​​{1}}的垂直中心,而不是setLayoutY()的顶部,以保持垂直居中,而不管大小如何。
  • 使用Label根据新的字体大小调整Label的y坐标。这里的问题是我不知道在显示文本之前 的宽度,因此在下面的代码中,setLayoutY()Label相同默认字体,因为它尚未应用。
labelHeight

谢谢。

1 个答案:

答案 0 :(得分:0)

我怀疑其他人也犯了同样的错误。我之前曾尝试将位置更改为CENTER_LEFT,但对我来说不起作用,因为我将自己的身高设置为自动计算高度。如果您有设定的高度,则可以正常工作。我的结论是我一定是脑残。