Кнопка всегда может автоматически изменять размер своей ширины до ее содержимого (textProperty
), но мне нужно что-то еще.JavaFX: Кнопки с одинаковой шириной и размером с текстом
У меня есть группа кнопок; каждый имеет свой собственный текст. Мне нужно, чтобы все кнопки имели одинаковую ширину, но в то же время я хочу, чтобы эта же ширина была как можно меньше (так, чтобы ни одна из кнопок не имела дополнительных пространств или многоточия).
Я думал, что это будет легко, пока я не понял, что 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
});
Итак, какие варианты у меня есть?
Вы пытались поместить всю кнопку на VBOX? Установите ширину VBOX в USE_COMPUTED_SIZE и привяжите свойства ширины кнопок к свойству ширины vbox – Zoltanik
Делает ли * nobody * больше читать документацию? В качестве примера можно привести стандартный Oracle [макет учебника] (http://docs.oracle.com/javase/8/javafx/layout-tutorial/size_align.htm#JFXLY133). В нем говорится: * «Вы можете решить проблему определения высоты и ширины каждой кнопки, а затем установить предпочтительный размер каждой кнопки на максимальную высоту и ширину кнопок в наборе. Более простой вариант - позволить макету panes выполните работу. "*, а затем продолжим рассказывать, как решить * именно эту проблему без вычислительных размеров (* или *, @Zoltanik, используя привязки). –