2013-07-31 16 views
5

Mam aplikację, w której mam tabelę i ProgressBar. Chcę rozszerzyć pasek postępu, gdy użytkownik zmieni rozmiar okna. Dla TextBox w JavaFX mogę ustawić priorytet na HBox i osiągnąć go zgodnie z przeznaczeniem. Ale dla ProgressBar to nie działa.Jak rozwijać pasek postępu poziomo w javafx?

Czy ktoś może mi powiedzieć, co robię źle?

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

Pokaż nam swój kod i czy korzystałeś z menedżerów układu? – Vinay

+0

@JJPA Sprawdź kod ... – Rajesh

+0

@JJPA Natknąłem się na blog podczas wyszukiwania go http://amyfowlersblog.wordpress.com/2010/05/26/javafx-1-3-growing-shrinking-and-filling/ – Rajesh

Odpowiedz

10

Bind Szerokości pasku postępu i 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

Najlepszym sposobem jest, aby ustawić maksymalną szerokość paska postępu.

browser.setMaxWidth(Double.MAX_VALUE);

i oczywiście powiedzieć VBox wypełnić swoje dzieci do pełnej szerokości (czyli de deault, więc może nie warto wspominać).

vbox.setFillWidth(true); 

Odpowiedź udzielona przez Uluka może działać w prostych przykładach. Może jednak prowadzić do niekontrolowanego wzrostu rodzica, jeśli rodzic reagujący na zmianę jego szerokości decyduje się również na zmianę swojej własnej szerokości. Nawet w niezbyt skomplikowanej formie można łatwo zaobserwować takie zachowanie.