Это невозможно без дополнительного кода, поскольку невозможно добавить несколько объектов в список одновременно, а инициализация списка также невозможна.
Вы можете создать вспомогательный класс, обеспечивающий static
методы получения / установки хотя.Этот метод может использовать отражение, чтобы добавить константы перечисления:
public class EnumUtil {
/* getter needed for FXMLLoader */
public static Class<?> getEnumClass(ObservableList list) {
return list.isEmpty() ? null : list.get(0).getClass();
}
public static <T extends Enum<T>> void setEnumClass(ObservableList<? super T> list, Class<T> enumClass) {
if (!enumClass.isEnum()) {
throw new IllegalArgumentException(enumClass.getName() + " is not a enum type");
}
list.addAll(enumClass.getEnumConstants());
}
}
fxml
<ComboBox>
<items>
<!-- fill combobox with constants from KeyCode -->
<FXCollections fx:factory="observableArrayList" EnumUtil.enumClass="javafx.scene.input.KeyCode"/>
</items>
</ComboBox>