У меня проблема с JavaFX (8), HBox, ComboBox и HGrow. HGrow не работает в сочетании с ComboBox.
(INFO: с TextField (вместо ComboBox), он работает, как ожидалось)JavaFX - Как сделать ComboBox hgrow?
Это мой FXML-код:
<?xml version="1.0" encoding="UTF-8"?>
<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<VBox prefHeight="117.0" prefWidth="285.0" xmlns="http://javafx.com/javafx/8" xmlns:fx="http://javafx.com/fxml/1" fx:controller="de.test.TestController">
<children>
<HBox prefHeight="105.0" prefWidth="196.0" VBox.vgrow="ALWAYS">
<children>
<ComboBox fx:id="fxCboTest" prefHeight="25.0" prefWidth="62.0" HBox.hgrow="ALWAYS" />
</children>
</HBox>
</children>
</VBox>
этот код приведет:
Я также пробовал следующий код (без успеха, этот код ничего не делает):
HBox.setHgrow(uiController.fxCboTest, Priority.ALWAYS);
Есть ли у кого-нибудь идеи, как сделать ComboBox HGrow?
'hgrow' не будет переопределять максимальную ширину изменяемого узла, которая по умолчанию установлена на предпочтительный размер. Немного информации об этом в [учебнике] (http://docs.oracle.com/javase/8/javafx/layout-tutorial/size_align.htm#JFXLY133), а также отличная [презентация в Parleys] (https: //www.parleys.com/tutorial/interface-layout-javafx-2-0) (требуется регистрация). –
Итак, почему это работает, только что заменив ComboBox на TextField в XML? – Ben
Немного покончить с настройками по умолчанию. Значения 'maxWidth' для обоих значений для дознания' Region.COMPUTED_SIZE', что вызывает вызов 'computeMaxWidth (...)'. Для элементов управления это в свою очередь делегирует реализацию скина.Копаясь в исходном коде, 'ComboBoxBaseSkin' разрешает это, возвращая предпочтительную ширину; 'TextFieldSkin' просто наследует реализацию' SkinBase' по умолчанию, которая возвращает 'Double.MAX_VALUE'. Следовательно, поле со списком по умолчанию ограничено его предпочтительным размером; текстовое поле разрешено расти неограниченно. Суть в том, что у них разные значения по умолчанию. –