javaFX 2.0将组件设置为直接父级的全宽和高度

时间:2011-05-30 09:07:56

标签: java javafx-2

如何使TextArea获取父窗格的完整宽度和高度。

我试过了:

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

但涵盖了通过parent.setTop(...)在顶部定义的元素 减少scaleY没有效果。

我还需要做些什么来实现这个目标?

由于

5 个答案:

答案 0 :(得分:26)

MAX_VALUE解决方案有点hacky,可能会导致性能问题。此外,答案可能取决于您的父容器是什么。无论如何,更好的方法是这样:

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()......

答案 1 :(得分:10)

用这个解决了

textArea.setPrefSize( Double.MAX_VALUE, Double.MAX_VALUE );

答案 2 :(得分:2)

您可以将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);

您也可以将其放在HBoxVBox内。然后调整大小限于水平/垂直方向。不确定这是否是一个问题。

答案 3 :(得分:0)

<TextArea style="-fx-pref-height: 10px;"/>

答案 4 :(得分:-4)

你可以通过创建一个css文件来做到这一点。

textarea
{
width://your width
}