8

我有一个应用程序,其中有一张桌子和ProgressBar. 当用户调整窗口大小时,我想扩展我的进度条。在TextBoxJavaFX 中,我可以设置HBox优先级并按预期实现。但是因为ProgressBar它不起作用。

谁能告诉我我做错了什么?

HBox root = new HBox();           
final ProgressBar browser = new ProgressBar();

//  final WebEngine webEngine = browser.getEngine();
// browser.setText("JJJ");
HBox.setHgrow(browser, Priority.ALWAYS);         
//  webEngine.loadContent("<b>asdf</b>");              
root.getChildren().add(browser);
scene.setRoot(root);
4

2 回答 2

14

绑定进度条和Vbox的宽度:

VBox root = new VBox();
root.setAlignment(Pos.TOP_CENTER);
final ProgressBar browser = new ProgressBar();
browser.prefWidthProperty().bind(root.widthProperty().subtract(20));  //  -20 is for 
   // padding from right and left, since we aligned it to TOP_CENTER.
root.getChildren().add(browser);
于 2013-07-31T09:23:34.763 回答
14

最好的方法是设置进度条的最大宽度。

browser.setMaxWidth(Double.MAX_VALUE);

当然要告诉 VBox 将其子项填充到整个宽度(这是默认值,因此可能不值得一提)。

vbox.setFillWidth(true);

Uluk 给出的答案可能适用于简单的示例。但是,如果父级响应子级更改其宽度而决定也更改其自己的宽度,则可能会导致父级不受控制地增长。即使在不太复杂的布局中,也可以很容易地观察到这种行为。

于 2016-01-13T07:13:21.920 回答