javaFX 2.0将组件设置为直接父级的全部宽度和高度
问题描述:
我如何使TextArea
获取父级窗格的全部宽度和高度。javaFX 2.0将组件设置为直接父级的全部宽度和高度
我尝试这样做:
TextArea textArea = new TextArea();
textArea.setScaleX(100);
textArea.setScaleY(100);
而是经由parent.setTop(...)
在顶部限定的元件覆盖。
减少scaleY
没有效果。
我还有什么要做到这一点?
感谢
答
解决这个
textArea.setPrefSize(Double.MAX_VALUE, Double.MAX_VALUE);
答
你可以做到这一点创建一个CSS文件。
textarea
{
width://your width
}
答
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()...
答
您可以通过将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
内。然后调整大小限于水平/垂直方向。不知道这是否是一个问题。
答
<TextArea style="-fx-pref-height: 10px;"/>
这不起作用... – 2017-03-17 01:18:52