Только один отзывчивый столбец в GridPane

Мне нужно сделать что-то вроде ниже в JavaFX:

Пример макета

Можете ли вы сказать мне, как я могу изменить размер только одного столбца (средний) в макете GridPane? Эти прямоугольники с черной окантовкой являются VBox. По сути, ширина VBox должна оставаться неизменной, а ширина этой отмеченной красным цветом области должна изменяться. Любые идеи или советы?


person Paxon96    schedule 01.10.2018    source источник


Ответы (2)


Используйте ограничения столбца, чтобы установить приоритеты роста NEVER/ALWAYS. Предполагая, что GridPane содержит 3 столбца и еще не добавлено никаких ограничений:

ColumnConstraints c1 = new ColumnConstraints();
c1.setHgrow(Priority.NEVER);

ColumnConstraints c2 = new ColumnConstraints();
c2.setHgrow(Priority.ALWAYS);

gridPane.getColumnConstraints().addAll(c1, c2, c1);
person fabian    schedule 01.10.2018
comment
Хорошо, но как я могу «прикрепить» правый столбец GridPane к правой части окна? - person Paxon96; 02.10.2018
comment
@Paxon96 Paxon96 Если GridPane является корнем сцены, это делается автоматически. Если это не так, это зависит от макетов предков, и в целом ответить невозможно. - person fabian; 02.10.2018
comment
Спасибо. Я только что использовал GridPane в качестве корневой сцены. Но у меня есть другая проблема. Можете ли вы сказать мне, что я должен сделать, чтобы установить кнопки справа как автоматически масштабируемые (высоту) в VBox? - person Paxon96; 02.10.2018
comment
Установите maxHeight кнопок на положительную бесконечность и установите VBox.vgrow на ALWAYS для всех этих кнопок. (Предполагая, что вы хотите, чтобы эти кнопки заполнили всю высоту сцены). - person fabian; 02.10.2018
comment
Фабиан ОГРОМНОЕ СПАСИБО! :D - person Paxon96; 02.10.2018

Несмотря на то, что это выполнимо, я думаю, что вместо этого лучше использовать BorderPane.

person rizcan    schedule 02.10.2018