2013-04-26 23 views
13

JavaFX docs for HBox powiedzieć:Dlaczego dzieci w moim JavaFX HBox nie rosną (SceneBuilder)?

Jeśli hbox jest zmieniany większy niż jego preferowanej szerokości, domyślnie będzie trzymać dzieci do preferowanych szerokościach, pozostawiając dodatkową przestrzeń niewykorzystana. Jeśli aplikacja chce mieć przydzielone jedno lub więcej dzieci, może opcjonalnie ustawić ograniczenie hgrow na dziecku. Zobacz "Opcjonalne ograniczenia układu", aby uzyskać szczegółowe informacje.

Na załączonym obrazku, dlaczego przycisk nie wypełnia szerokości poziomej?

enter image description here

Czy to nie jest taki sam jak kod HBox.setHgrow(field, Priority.ALWAYS) docs dotyczą.

Odpowiedz

19

Wybierz przycisk jak masz zrobić w zrzucie w tych polach Rozmiar w panelu Układ po prawej ustawić Maksymalna szerokość do:

MAX_VALUE 

ten przestanie maksymalny rozmiar przycisku od bycia związany z preferowanym rozmiarem przycisku.

Zobacz Tips for Sizing and Aligning Nodes

sterujące interfejsu Oracle zapewniają również domyślny minimalne i maksymalne rozmiary, które są oparte na typowym zastosowaniu kontroli. Na przykład maksymalny rozmiar obiektu Button ma domyślny rozmiar, ponieważ zazwyczaj nie chcemy, aby przyciski były dowolnie duże.

....

Aby włączyć wszystkie przyciski mają być zmniejszane do szerokości szyby VBox, maksymalna szerokość każdego przycisku jest ustawiony na Double.MAX_VALUE stała, która umożliwia kontrolę rosnąć bez ograniczeń. Alternatywą dla używania maksymalnej wartości stałej jest ustawienie maksymalnej szerokości na określoną wartość, na przykład 80.0.

+0

Odpowiednik w kodzie: 'myButton.setMaxWidth (Double.MAX_VALUE);' –

2

Jeśli używasz fxml bezpośrednio, można użyć maxWidth="Infinity", lub - tak jak robi SceneBuilder podczas korzystania MAX_VALUE, który jest reprezentowany przez maxWidth="1.7976931348623157E308".

To może wyglądać następująco (pasek postępu jest wewnątrz GridPane:

<ProgressBar maxWidth="Infinity" prefWidth="200.0" progress="0.0" GridPane.columnIndex="0" GridPane.hgrow="ALWAYS" GridPane.rowIndex="2" GridPane.valignment="CENTER">