Resize Node im BorderPane

jCoder1984

Aktives Mitglied
Hallo zusammen

ich möchte ein AnchorPane aus einer Datei laden. Dies klappt auch ganz gut. Allerdings möchte ich nun die Breite bzw die Höhe an das AnchorPane anpassen. Also das AnchorPane soll die gleiche Breite (Top, Bottom) bzw Höhe (Left, Center, Right) wie das BorderPane haben.

Java:
    @Override
    public void initialize(URL arg0, ResourceBundle arg1) {
    AnchorPane node = (AnchorPane) loadNodeFromFile();
    node.prefWidthProperty().bind(borderPane.widthProperty());
    borderPane.setTop(node);
    }

Hat jemand eine Idee wie ich es machen kann.
 
Danke für deine Antwort. Aber ich möchte gerne ein BorderPane verwenden. Dort möchte ich gerne per MenuAction eine ToolBar ein und auch wieder ausblenden.
Wenn ich nun die ToolBar lade wird sie nicht in der komplette Breite des BorderPane angezeigt.

Der Grund warum ich ein BorderPane verwende : ich möchte gerne das RootPane dynamisch gestalten (Ein / ausblenden ) von toolbar, Filter usw...
 
du redest aber in deinem ersten Post von einem AnchorPane?

versuch mal die statische variante
Java:
BorderPane.setAlignment(Node node, Pos pos);

für solche sachen wie ein und ausblenden wäre eventuell ein StackPane nicht verkehrt...
StackPane ist stapelbar und die einzelnen Panes sind über den index ansprechbar
 
Danke für deine Antwort. Habe nun mal auf Stackpane umgestellt. Aber nun wird das gesamte Layout zerschossen.
Ich möchte im oberen bereich eine Toolbar, links ein AnchorPane und in der Mitte ein Listview anzeigen lassen. Alle drei element soll der Nutzer ausblenden können. Und dann soll sich die Höhe und Breite der übrigen Elemente anpasssen. Aus diesem Grund habe ich das BorderPane verwendet.

Beim BorderPane habe ich das Problem, dass die Breite beim mittleren Element (ListView) zu groß ist. Hier mal mein Code.
Java:
        // load toolbar
        loader = new FXMLLoader(getClass().getResource("/views/Toolbar.fxml"));
        toolBar = loader.load();
        borderPane.setTop(toolBar);


        // load filter
        loader = new FXMLLoader(getClass().getResource("/views/Filter.fxml"));
        filter = loader.load();
        filter.prefHeightProperty().bind(borderPane.heightProperty());
        borderPane.setLeft(filter);


        // load match list
        loader = new FXMLLoader(getClass().getResource("/views/MatchList.fxml"));
        matchList = loader.load();
        matchList.prefWidthProperty().bind(borderPane.widthProperty());
        matchList.prefHeightProperty().bind(borderPane.heightProperty());
        borderPane.setCenter(matchList);

Beim Stackpane habe ich es nicht geschafft die Element so wie oben beschrieben anzuordnene
 
ok ich dachte du willt die toolbar vor dem filter schalten deswegen das stackpane.

was ist wenn du die Bereiche top und left wieder auf null setzt?
 
ekelhafter code aber meinst du sowas?

Java:
import javafx.application.Application;
import javafx.collections.FXCollections;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.ListView;
import javafx.scene.control.RadioButton;
import javafx.scene.control.ToolBar;
import javafx.scene.layout.BorderPane;
import javafx.stage.Stage;

public class Main extends Application {

    @Override
    public void start(Stage primaryStage) {
        BorderPane borderPane = new BorderPane();

        try {

            ToolBar bar = new ToolBar();

            Button hideLeft = new Button("Hide Left");
            hideLeft.setOnAction(e->{
                borderPane.setLeft(null);
            });

            Button hideBottom = new Button("Hide Bottom");
            hideBottom.setOnAction(e->{
                borderPane.setBottom(null);
            });

            Button showLeft = new Button("Show Left");
            showLeft.setOnAction(e->{
                borderPane.setLeft(new RadioButton("LEFT"));
            });

            Button showBottom = new Button("Show Bottom");
            showBottom.setOnAction(e->{
                borderPane.setBottom(new RadioButton("BOTTOM"));
            });


            // add to toolbar
            bar.getItems().addAll(hideLeft, hideBottom, showLeft, showBottom);

            ListView<String> list = new ListView<>(FXCollections.observableArrayList("Eins","Zwei","Drei","...."));
            list.setMinHeight(250.0);
            list.setMinWidth(250.0);

            BorderPane.setAlignment(bar, Pos.CENTER);
            BorderPane.setMargin(bar, new Insets(0,0,10,0));

            borderPane.setTop(bar);
            borderPane.setCenter(list);
            borderPane.setLeft(new RadioButton("LEFT"));
            borderPane.setBottom(new RadioButton("BOTTOM"));

            primaryStage.setScene(new Scene(borderPane, 500, 500));
            primaryStage.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    public static void main(String[] args) {
        launch(args);
    }

}
 
Also mein Problem ist die Breite des Node im Zentrum anzupassen. im Moment ist es eine leere Listview, die in einem AnchorPane eingebunden ist.
 

Zurück
Oben