在我的JavaFX应用程序,用户登录和应用程序检索有关的用户数据。数据的一块是他们公司的名字。应用程序必须调整文本保持Label
的宽度。
我有一个textProperty()
听者,其调节一个TextField
内的Label
的字体大小。宽度功能的工作原理。不管公司名称的长度,它适合。然而,较小的文本squishes了接近Ÿ像这样的Label
坐标:
接壤的重点。顶部是什么样子时,它适用于宽度等。底部正确地调整大小的字体,但不调整在y坐标相应。
所以,我有两个想法,我不知道该怎么办无论是。
setLayoutY()
设置Label
的垂直中心,而不是Label
的顶部,以保持垂直居中无论大小。setLayoutY()
调整基于新的字体大小Label
的y坐标。这里的问题是,我不知道如何让我的文字的宽度之前,我显示出来,所以在下面我的代码,labelHeight
相同labelHeight
与默认的字体,因为它尚未使用。// Resizes text to fit name lengths
companyNameLabel.textProperty().addListener((observable, oldValue, newValue) -> {
Text tmpText = new Text(newValue);
tmpText.setFont(Font.font("Oxygen", 72));
double textWidth = tmpText.getLayoutBounds().getWidth();
// Check if text width is greater than maximum width
if (textWidth > 470) {
// Change font size to fit within 470
double newFontSize = 72 * 470 / textWidth;
companyNameLabel.setFont(Font.font("Oxygen", newFontSize));
// Finds y value for vertical centering
double labelHeight = companyNameLabel.getHeight();
System.out.println(labelHeight);
companyNameLabel.setLayoutY(155 - labelHeight / 2);
}
});
谢谢。
我怀疑别人犯同样的错误。我曾试图改变定位前CENTER_LEFT
,但它并没有为我工作,因为我有我的高度设置为自动计算的高度。如果你有一个设定的高度,这将正常工作。我已经得出结论,我必须新空房禁地。