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 
} 
+0

这不起作用... – 2017-03-17 01:18:52

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); 

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

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