如何使TextArea
获取父窗格的完整宽度和高度。
我试过了:
TextArea textArea = new TextArea();
textArea.setScaleX( 100 );
textArea.setScaleY( 100 );
但涵盖了通过parent.setTop(...)
在顶部定义的元素
减少scaleY
没有效果。
我还需要做些什么来实现这个目标?
由于
答案 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);
您也可以将其放在HBox
或VBox
内。然后调整大小限于水平/垂直方向。不确定这是否是一个问题。
答案 3 :(得分:0)
<TextArea style="-fx-pref-height: 10px;"/>
答案 4 :(得分:-4)
你可以通过创建一个css文件来做到这一点。
textarea
{
width://your width
}