javaFX 2.0 устанавливает компонент на полную ширину и высоту непосредственного родителя - PullRequest
13 голосов
/ 30 мая 2011

Как я могу заставить TextArea взять полную ширину и высоту родительской панели.

Я пробовал это:

TextArea textArea = new TextArea();
textArea.setScaleX( 100 );
textArea.setScaleY( 100 );

, но элемент, определенный в верхней части через parent.setTop(...) был покрыт.
Уменьшение scaleY не имело никакого эффекта.

Что еще мне нужно сделать, чтобы достичь этого?

Спасибо

Ответы [ 5 ]

26 голосов
/ 08 июля 2011

Решение MAX_VALUE немного хакерское и может вызвать проблемы с производительностью.Кроме того, ответ на этот вопрос может зависеть от того, какой у вас родительский контейнер.В любом случае, лучший способ сделать это был бы так:

textArea.prefWidthProperty().bind(<parentControl>.prefWidthProperty());
textArea.prefHeightProperty().bind(<parentConrol>.prefHeightProperty());

Возможно, вы также захотите связать предпочтительные свойства с реальными свойствами, особенно если родительский объект использует свои вычисленные измерения, а не явные:

textArea.prefWidthProperty().bind(<parentControl>.widthProperty());
textArea.prefHeightProperty().bind(<parentConrol>.heightProperty());

Это также можно сделать без использования привязки, переопределив метод layoutChildren () родительского контейнера и вызвав

textArea.resize(getWidth(), getHeight());

Не забудьте вызвать super.layoutChildren () ...

11 голосов
/ 30 мая 2011

решено с этим

textArea.setPrefSize( Double.MAX_VALUE, Double.MAX_VALUE );
2 голосов
/ 01 августа 2011

Вы достигаете этого, помещая TextArea в BorderPane.

Stage stage = new Stage();
stage.setTitle("Resizing TextArea");

final BorderPane border = new BorderPane();
Scene scene = new Scene(border);

TextArea textArea = new TextArea();
textArea.setStyle("-fx-background-color: #aabbcc;");

border.setCenter(textArea);

primaryStage.setScene(scene);
primaryStage.setVisible(true);

Вы также можете поместить его в HBox или VBox. Тогда изменение размера ограничено горизонтальным / вертикальным направлением. Не уверен, что это проблема.

0 голосов
/ 29 ноября 2016
<TextArea style="-fx-pref-height: 10px;"/>
0 голосов
/ 30 мая 2011

Вы можете сделать это с созданием файла CSS.

textarea
{
width://your width
} 
...