Hi,
ich bin gerade ein bisschen dabei, einige Controls zu erweitern. Dabei soll das Design natürlich auch eine Rolle spielen (und ich will auf FXML verzichten, um die GUI, das Styling (CSS), die Logik und das Model sauber voneinander zu trennen).
Dabei stoße ich auf ein Problem..
Also: ich habe ein BorderPane. Im Center der BP befindet sich eine SplitPane, auf der linken Seite ein AnchorPane, welches eine VBox enthält (die wiederum eine HBox, ListView und ein ButtonBar enthält).
Kurz: BorderPane -> SplitPane -> AnchorPane -> VBox
Mein Ziel ist, dass die ListView den vertikalen Leerraum füllt.
Versucht habe ich das mit
Laut meinen Vorlesungsunterlagen müsste das mit
Leider tut sich da gar nichts.. hat jemand eine Idee? Die ButtonBar und die HBox (mit dem TextField und dem Label) sollten unverändert bleiben. Es soll sich lediglich die ListView auf ihre maximale vertikale Größe ausdehnen.
ich bin gerade ein bisschen dabei, einige Controls zu erweitern. Dabei soll das Design natürlich auch eine Rolle spielen (und ich will auf FXML verzichten, um die GUI, das Styling (CSS), die Logik und das Model sauber voneinander zu trennen).
Dabei stoße ich auf ein Problem..
Also: ich habe ein BorderPane. Im Center der BP befindet sich eine SplitPane, auf der linken Seite ein AnchorPane, welches eine VBox enthält (die wiederum eine HBox, ListView und ein ButtonBar enthält).
Kurz: BorderPane -> SplitPane -> AnchorPane -> VBox
Mein Ziel ist, dass die ListView den vertikalen Leerraum füllt.
Versucht habe ich das mit
Code:
VBox vbox = new VBox();
vbox.setSpacing(5);
vbox.setMaxHeight(Double.MAX_VALUE);
// SEARCH FIELD
HBox hbox = new HBox();
hbox.setAlignment(Pos.CENTER);
hbox.setSpacing(5);
hbox.setPadding(new Insets(10));
Label label = new Label("Suche: ");
searchField = new TextField();
hbox.getChildren().addAll(label, searchField);
listview = new ListView();
listview.setMaxHeight(Double.MAX_VALUE);
VBox.setVgrow(listview, Priority.ALWAYS);
// ADD LISTENER FOR TEXTFIELD
searchField.textProperty().addListener(new ChangeListener<String>() {
@Override
public void changed(ObservableValue observable, String oldWord, String newWord) {
presenter.search(filteredData, newWord);
}
});
ButtonBar buttonBar = new ButtonBar();
Button bAdd = new Button("Add");
Button bChange = new Button("Change");
Button bDelete = new Button("Delete");
buttonBar.getButtons().addAll(bAdd, bChange, bDelete);
bDelete.setOnAction(e -> {
presenter.delete(listview.getSelectionModel().getSelectedItem());
});
vbox.getChildren().addAll(hbox, listview, buttonBar);
leftPane.getChildren().add(vbox);
Laut meinen Vorlesungsunterlagen müsste das mit
funktionieren, solange das Child (welches als Parameter übergeben wird; hier 'listview') auch die entsprechende, maximale, vertikale Maximalgröße besitzt.VBox.setVgrow(listview, Priority.ALWAYS);
Leider tut sich da gar nichts.. hat jemand eine Idee? Die ButtonBar und die HBox (mit dem TextField und dem Label) sollten unverändert bleiben. Es soll sich lediglich die ListView auf ihre maximale vertikale Größe ausdehnen.