2013-07-31 3 views
5

У меня есть приложение, где у меня есть стол и ProgressBar. Я хочу расширить свой индикатор выполнения, когда пользователь изменяет размер окна. Для TextBox в JavaFX я могу установить приоритет HBox и достичь его по назначению. Но для ProgressBar он не работает.Как увеличить индикатор выполнения горизонтально в javafx?

Может ли кто-нибудь сказать мне, где я поступаю неправильно?

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

Покажите нам свой код и использовались ли какие-либо менеджеры макетов? – Vinay

+0

@JJPA Пожалуйста, проверьте код .. – Rajesh

+0

@JJPA Я наткнулся на блог, ища его http://amyfowlersblog.wordpress.com/2010/05/26/javafx-1-3-growing-shrinking-and-filling/ – Rajesh

ответ

10

Bind ширина прогресс бар и 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); 
9

Самый лучший способ, чтобы установить максимальную ширину строки прогресса.

browser.setMaxWidth(Double.MAX_VALUE);

и, конечно, сказать VBox для заполнения своих детей вплоть до полной ширины (что де deault, поэтому, возможно, не стоит упоминать).

vbox.setFillWidth(true); 

Ответ, данный Улуком, может работать в простых примерах. Однако это может привести к неконтролируемому росту родителя, если родительский ответ на ребенка, изменяющего его ширину, также решит изменить свою собственную ширину. Даже в не слишком сложном макетировании такое поведение легко можно наблюдать.