我有一个应用程序,我有一个表和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);
答案 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给出的答案可能在简单的例子中起作用。然而,如果父母对孩子改变其宽度的反应也决定改变自己的宽度,那么它可能会导致父母的不受控制的增长。即使没有过于复杂的布局,也很容易观察到这种行为。