У меня есть сцена JavaFX, которая содержит javafx.scene.layout.HBox
. Это HBox
содержит двух детей, javafx.scene.control.ComboBox
, а затем javafx.scene.control.Spinner
. Минимальный FXML файл, чтобы проиллюстрировать мою проблему является:JavaFX HBox Приоритет HGrow
<?import javafx.scene.control.ComboBox?>
<?import javafx.scene.control.Spinner?>
<?import javafx.scene.control.SpinnerValueFactory.IntegerSpinnerValueFactory?>
<?import javafx.scene.layout.HBox?>
<HBox xmlns="http://javafx.com/javafx/8.0.65"
xmlns:fx="http://javafx.com/fxml/1">
<children>
<ComboBox fx:id="myComboBox" />
<Spinner fx:id="mySpinner" editable="true">
<valueFactory>
<SpinnerValueFactory.IntegerSpinnerValueFactory
min="0" max="999" initialValue="0" />
</valueFactory>
</Spinner>
</children>
</HBox>
В коде ComboBox
заселяется с очень длинными (в символах) строк. Я также задаю желаемую ширину Spinner
. Следующий код представляет то, что я делаю:
@FXML
private ComboBox<String> myComboBox;
@FXML
private Spinner<Integer> mySpinner;
@Override
public void initialize(URL location, ResourceBundle resources) {
myComboBox.getItems().setAll(
"Some very long string that takes up a very large portion" +
" of the screen. You can probably see where this is going.");
mySpinner.getEditor().setPrefColumnCount(3);
}
желаемый эффект, что управление Spinner
выделяется он предпочел ширину, и контроль ComboBox
дается оставшуюся часть пространства. Однако то, что я вижу, состоит в том, что, поскольку элемент управления содержит хотя бы один очень длинный вариант, ему выделяется почти все пространство (так как его предпочтительная ширина намного больше, чем выделенное пространство). Все, что я вижу на элементе управления прядильщиком, это стрелки вверх/вниз.
Кто-нибудь знает, как я могу заставить JavaFX выделить пространство для объекта Spinner
до рассмотрения предпочтительной ширины ComboBox
?
minWidth не помогает? –
Я не знаю, что положить в 'minWidth', так как это зависит от используемого шрифта. Я заметил, что RedHat Linux использует гораздо больший шрифт по умолчанию, чем Windows 7. Не зная шрифт заранее (или настраиваемые пользователем параметры, такие как размер шрифта в Windows), трудно определить магические числа, необходимые для создания 'minWidth' полезно. –
Вы можете получить шрифт 'Spinner':' spinner.getEditor(). GetFont() ' – jns