Поскольку вы не описали то, что хотите показать вместо textField, я предполагаю, что вы хотите, чтобы кнопка заполняла общую ширину.Независимо от того, кто отвечает за создание, настройку и размещение дочерних элементов элемента управления, это его оболочка.В общем, вам понадобится собственный скин и настроить то, что вы хотите изменить, здесь: макет.
Что делать:
- подкласс DatePickerSkin
- в его конструкторе, возьмите arrowButton (это личное, но вы можете найти его через его стиль)
- переопределить layoutChildren, удалите редактор и измените ширину кнопки, чтобы заполнить ширину
Некоторый пример необработанного кода (очевидно, есть свобода для полировки :)
public class MyPickerSkin extends DatePickerSkin {
StackPane arrowButtonAlias;
public MyPickerSkin(DatePicker control) {
super(control);
arrowButtonAlias = (StackPane) control.lookup(".arrow-button");
}
@Override
protected void layoutChildren(double x, double y, double w, double h) {
super.layoutChildren(x, y, w, h);
// seems the removal must happen after super's layout (see OPs comment)
getChildren().remove(getEditor());
arrowButtonAlias.resizeRelocate(x, y, w, h);
}
}