如何在javafx中水平增长进度条?

时间:2013-07-31 06:29:10

标签: java javafx-2

我有一个应用程序,我有一个表和ProgressBar。我想在用户调整窗口大小时展开我的进度条。对于JavaFX中的TextBox,我可以设置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);

2 个答案:

答案 0 :(得分:12)

绑定进度条和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);

答案 1 :(得分:12)

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

browser.setMaxWidth(Double.MAX_VALUE);

当然要告诉VBox将其孩子填满整个宽度(这是de deault,所以也许不值得一提)。

vbox.setFillWidth(true);

Uluk给出的答案可能在简单的例子中起作用。然而,如果父母对孩子改变其宽度的反应也决定改变自己的宽度,那么它可能会导致父母的不受控制的增长。即使没有过于复杂的布局,也很容易观察到这种行为。