按钮总是可以自动调整其宽度到其内容(textProperty
),但我还需要更多内容。
我有一组按钮;每个都有自己的文字。我需要所有按钮具有相同的宽度,但同时,我希望这个相同的宽度尽可能小(这样任何按钮都没有额外的空格也没有省略号。)
我认为这很容易,直到我意识到getWidth()
,getlayoutBounds.getWidth()
和getlayoutBoundsInParent().getWidth()
没有返回计算出的宽度。
最初我直接绑定了所有属性(prefWidthProprety()
到widthProperty()
等),但最终我又回到了手动模式进行调查:
Button buttonA; // With original text "hello world"
buttonA.setText("Testing new String. This is very long so the width will be very big.");
buttonA.layout();
buttonA.requestLayout();
Platform.runLater(() ->
{
System.out.println(buttonA.getWidth()); // Gives me old value
System.out.println(buttonA.getlayoutBounds.getWidth()); // Gives me old value
System.out.println(buttonA.getlayoutBoundsInParent().getWidth()); // Gives me old value
});
现在,我有哪些选择?
答案 0 :(得分:1)
回答关于布局的问题:
您可以在Button
的父级上请求布局,例如:
buttonA.setText("Testing new String. This is very long so the width will be very big.");
buttonA.getParent().layout();
buttonA.getParent().applyCss();
我添加了applyCss
并删除了requestLayout
:
如果需要,请将样式应用于此节点及其子节点(如果有)。这个 方法通常不需要直接调用,但可以使用 与Parent.layout()一起在下一个之前调整节点的大小 脉冲,或者场景不在舞台上。