BorderPane Seiten ein und ausblenden?

MiMa

Top Contributor
In einem BorderPane Fenster möchte ich über Schaltfläche in der Toolbar die Seiten des Borderpanes ein und ausblenden lassen können.
Weiß jemand wie das funktioniert?

Vielen Dank
 

KonradN

Super-Moderator
Mitarbeiter
Eine Möglichkeit wäre, dass Du dann an der Seite eine Pane einfügst und du dann diese pane sichtbar bzw. unsichtbar machst.

Ein kleines Beispiel, wie es aussehen könnte:
Java:
    @Override
    public void start(Stage primaryStage) throws IOException {
        BorderPane root = new BorderPane();
        Scene scene = new Scene(root, 300, 200);

        // Pane mit Label erstellen
        Pane contentPane = new Pane();
        contentPane.setPrefSize(200, 200);
        contentPane.setStyle("-fx-background-color: lightblue;");
        Label label = new Label("Dies ist eine versteckte Pane");
        contentPane.getChildren().add(label);
        contentPane.setVisible(false);

        // Button zum Ein-/Ausblenden der Pane erstellen
        Button toggleButton = new Button("Ein-/Ausblenden");
        toggleButton.setOnAction(e -> {
            contentPane.setVisible(!contentPane.isVisible());
        });

        // BorderPane einrichten
        root.setCenter(toggleButton);
        BorderPane.setMargin(toggleButton, new Insets(10));
        root.setRight(contentPane);

        primaryStage.setScene(scene);
        primaryStage.setTitle("Pane ein/ausblenden");
        primaryStage.show();
    }
 

MiMa

Top Contributor
Vielen Dank.
Ach so, wenn das Border Feld leer ist wird es nicht angezeigt.
Sobald es aber einen Inhalthalt wird es auch dargestell.
 

KonradN

Super-Moderator
Mitarbeiter
Ja genau, wobei es nicht leer sein muss. Ein unsichtbarer Inhalt hat auch den gleichen Effekt. Aber die Pane entfernen und bei Bedarf wieder einfügen müsste ebenso funktionieren - aber ist vom Code her natürlich deutlich aufwendiger als einfach das unsichtbar machen.
 

MiMa

Top Contributor
Ich habe ein Testfenster mit SceneBuilder gebaut um benötigte Funktionen aus zu testen.
Das Problem mit der VBox aus zu schalten funktioniert mit einem ToglgeButton sehr gut.
Allerdings habe ich ein Problem mit dem Biden der ListView an den entsprechenden Kanten oben, unten und der rechten Seite.
Das Layout soll auch funktionieren wenn es vergrössert oder verkelinert wird.
Wenn ich die Lösung mit HBox und VBox erstelle, dann habe ich das Problem, dass sowohl die VBox und die ListVie an den Seiten nicht gebunden werden kann. Wenn ich die Lösung wie im Bild mit AnkePane baue, dann kann ich zwar die Kanten binden, aber wenn ich die VBox ausblende, verbreitert sich die ListView nicht.
vboxToggle.jpg
 

KonradN

Super-Moderator
Mitarbeiter
Kannst Du ein kleines, minimales Beispiel bringen, welches das Problem aufzeigt? Im Augenblick habe ich das Problem, dass ich das Problem nicht ganz verstehe. Was für ein Problem hast Du mit dem Binden? Wie sieht die Struktur des Fensters aus? (Also was für Controls hast Du wie verschachtelt?)

Wenn Du ein kleines Beispielprojekt machst, dann könnte man etwas damit herumspielen und nach dem Problem suchen.
 

MiMa

Top Contributor
Mit ist dann die idee gekommen, die Bindung links der Dateiliste von 45 auf 0 im Kontroller zu verändern sobal der ToggleButon geklickt wurde.
Also beim ausschalten habe ich den linken anker auf 0 gesetzt und beim einschalten der VBox habe ich die lonke Bindung wieder auf 45 gesetzt.
Funktioniert.
Java:
@FXML
    void postfach_tb_tb_btnOA(ActionEvent event) {
        System.out.println("Die Schaltfläche TB im Postfach der Vertikalen Toolbar wurde gedrückt");
        if (postfach_verttoolbar.isVisible()) {
            // Wenn sichtbar, ausblenden
            postfach_verttoolbar.setVisible(false);
            postfach_tb_toggle.setText("EIN"); // Ändern Sie den Text der Schaltfläche
            postfach_seitelinks_AKP.setLeftAnchor(postfach_dateiliste, 0.0); // Linken Bindungswert auf 0 setzen, um auszublenden
        } else {
            // Wenn nicht sichtbar, sichtbar machen
            postfach_verttoolbar.setVisible(true);
            postfach_tb_toggle.setText("AUS"); // Ändern Sie den Text der Schaltfläche
            postfach_seitelinks_AKP.setLeftAnchor(postfach_dateiliste, 45.0); // Linken Bindungswert auf 0 setzen, um auszublenden
        }
    }
Ich hatte vorher das Problem das die vbox mit den senkrechten Buttons zwar ausgeschaltet wurde, aber der Platz nicht freigegeben wurde.
Die Dateiliste wurde an allen kannten oben 40 links 45, unten 0 und rechts 0 mit den AnchorPane Constrains gebunden.
Also VBox ist aus, wird der linke Constrain von 45 auf 0 gesetzt. Damit verbreitert sich die Dateiliste.
Beim einschalten wird dieser wieder auf 45 gesetzt, die VBox wird wieder sichtbar gemacht und die Dateiliste verkleinert sich wiede rin der breite.
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Die Frage ist, ob Du überhaupt mit Ankern arbeiten solltest. Es ist oft einfacher, alles mit einem Baum an diversen Nodes zu machen. Dann richtet sich vieles ganz von alleine aus, wenn Du etwas ein- / ausblendest. Damit habe ich bisher die besten Erfahrungen gemacht bei etwas komplexeren UIs (Wobei ich in erster Linie im Backend unterwegs bin. Ich bin hier also kein Experte!)
 

MiMa

Top Contributor
Das habe ich auch versucht aber das hat nicht wirklich gut funktioniert.
So gerne ich mit vBox und hBox gearbeitet hätte gibt es dann das Problem an den Mittel und Unterteilen.
Die Mittelteile kann ich nicht wirklich gut bestimmen da ich nie genau weiss wie beit oder hoch die Mittelteile sind.
Ich kann halt keine vBox rechts oder unten am fenster anbinden. Zumindest habe ich das bisher nicht gesehen. Ich denke das ist auch nicht das Ziel von den Boxen. Daher habe ich die AnkerPane genommen, und damit ging das ganze dann schon wesentich einfacher.
Das bedeutet nicht das ich jetzt alles mit AnkerPane mache, das kann ich je nach Bedarf ja mischen.
Die senkrechte Toolbarliste habe ich ja auch nichts anderes als eine VBox Vertikal genommen und ein paar Buttons hinein gepackt.
 
Zuletzt bearbeitet:

MiMa

Top Contributor
Anfangs hatte ich das mal mit BprderPane probiert, bin aber dann davon wieder abgegangen.
Ich probiere es mit meinen jetzigen Kentnisstand nochmal mit der BoderPane.
 

MiMa

Top Contributor
So ich habe das jetzt mal probiert und hier ist mal eine Beschreibung.
Die Grüne Umrandung ist die BorderPane linke Seite.
Dort müsste eine Senkrechte Toolbar sein, die sich ein und ausschalten lässt. Diese habe ich dunkelblau dargestellt und sollte sich bis unten ausdehnen. Die Breite ist fest definiert.
Der Hellblaue Bereich ist eine ListView, die sich sowohl Horizontal als auch Vertikal ausdehen soll. Wird der dunkelblaue Bereich ausgeblendet, soll sich der hellblaue Bereich horizontal ausdehen und beim einschalten des blauen Bereiches wieder verkürzen.
Die hell und dunkelgrünen Flächen sind die HBoxen. Diese passen sich zwar in der breite an, aber nicht in der Vertikalen.
Und dieses Problem habe ich nicht gelöst bekommen ohne konkret aus zu rechnen wie die Höhe und die Breite ist. Ändert sich die Fenstergröße hab ich dann scheinbar wieder ein Problem?
Ich habe so ziemlich viel ausprobiert. Mit einer Pane und v-und hBoxen in verschiedenen kombinationen. Bei allen bin ich immer an dem Problem gestoßen mit der automatischen Breite oder Höhe ohne Parameter definitiv anzu geben.
Ausserdem sind Dateinamen mal länger und deshalb hatte ich mich dann für eine SplitPane entschieden wo ich im gegensatz zu BorderPane Bereiche anpassen kann.
Aber wenn du da interesante Möglichkeiten hast das Problem zu lösen würde ich es mir gerne mal ansehen.
BorderPaneLeft.jpg
 

KonradN

Super-Moderator
Mitarbeiter
Ich habe da jetzt noch nichts gross probiert, aber das, was Du da in Blau und Grün dargestellt hast, sieht doch auch wieder stark nach einem BorderPane aus D hast oben die grüne Leiste und unten die weisse. Und dann hast Du 3 Elemente, die halt Links, Mitte und Rechts sein könnten.

Du kannst also die diversen Pane auch verschachteln. Du musst da also nicht mit HBox und VBox auf Zwang was machen (wobei das auch gehen müsste, aber halt mit viel mehr eigenem Aufwand). Das aber einfach nur als ein schneller Einwurf.
 

MiMa

Top Contributor
Nein, eigentlich sollte in der linken Border Pane so aussehen

oben in der anderen Grafik siehtst du das weisse, weil die Box nicht nach unten automatisch anschlägt.
Und rechts der Hellrüne bereich siehst du auch nur weil die Box rechts nicht anschlagt.
Das sind die Problemantiken die ich versucht habe zu erläuftern.
Der Linek BorderPane Bereich sollte so aussehen.
BorderPaneLinks2.jpg
Der Grüne Bereich oben für eine toolbar horizontal und links der dunkelblaue Bereich für eine Toolbar links die ein und ausgeschaltet wird. und der Hellblaue Bereich ist der die ListView darstellt. dieser bereich erweitert sich auf die gesamte Breite wenn der dunkelblaue Bereich ausgeblendt wird und verringert sich wieder wenn der dunkelblaue Bereich wieder eingeschaltet wird.

Also aktuell habe ich das Problem relativ einfach mit der AnkerPane gelöst, das mit den h -und vHoxen scheint nicht wirklich zu funktionieren?! Zumindest habe ich das nicht hin bekommen.
 
Zuletzt bearbeitet:

KonradN

Super-Moderator
Mitarbeiter
Also ich habe massive Probleme, Dich hier zu verstehen. Daher ist es ganz wichtig, dass man konkreten Code hat, an dem man
a) Probleme nachvollziehen / verstehen kann
b) Lösung ausprobieren kann

Evtl. habe ich das Problem gefunden. Ich habe einfach mal mit meinem Beispiel etwas herum gespielt und da dann die Seite zum Ausblenden von rechts nach links gepackt und siehe da: Der Platz war auch weiterhin vorhanden - die center pane is nicht nach links verschoben worden.

Das Problem ist, dass auch eine unsichtbare pane weiterhin seinen Platz einnimmt. Man könnte die Pane komplett heraus nehmen, oder man sagt zusätzlich, dass diese nicht mehr managed ist: contentPane.setManaged(!contentPane.isManaged());

Der Beispiel-Code hat sich somit nun etwas geändert:
Java:
    @Override
    public void start(Stage primaryStage) throws IOException {
        BorderPane root = new BorderPane();
        Scene scene = new Scene(root, 300, 200);

        // Pane mit Label erstellen
        Pane contentPane = new Pane();
        contentPane.setPrefSize(200, 200);
        contentPane.setStyle("-fx-background-color: lightblue;");
        Label label = new Label("Dies ist eine versteckte Pane");
        contentPane.getChildren().add(label);

        Button toggleButton = new Button("Ein-/Ausblenden");
        toggleButton.setOnAction(e -> {
            contentPane.setVisible(!contentPane.isVisible());
            contentPane.setManaged(!contentPane.isManaged());
        });

        Pane buttonPane = new Pane();
        buttonPane.setStyle("-fx-background-color: green;");
        buttonPane.getChildren().add(toggleButton);

        root.setCenter(buttonPane);
        root.setLeft(contentPane);

        primaryStage.setScene(scene);
        primaryStage.setTitle("Pane ein/ausblenden");
        primaryStage.show();
    }

Das ist dann jetzt hoffentlich ein besseres Beispiel - und damit so ein Fehler auffällt, habe ich das center auch eingefärbt.
 

MiMa

Top Contributor
Hallo Konrad,
wie ich sehe, hast du das Problem immer noch nicht verstanden.
HBox und VBox in der obersten Struktur zu nutzen, funktioniert schon.
Zwei Boxen nebeneinander zeigen nicht das Problem, es tritt erst auf wenn die Verschatelung größer ist.
Sobald man zwei HBoxen in einen continer einfügt und in der untersten H-Box zwei VBoxen drin sind, passen sich die vboxen und die untere HBox nicht mehr an.
Hier habe ich mal ein Video welches ich mit AnkerPane gelöst habe .
Ich werde das mas Problem mit den box container nicht mehr weiter Verfolgen.
BoderPane links mit Tollbars und Dateiliste
 
Zuletzt bearbeitet:
Ähnliche Java Themen
  Titel Forum Antworten Datum
H JavaFX JavaFX - Scene Builder - BorderPane AWT, Swing, JavaFX & SWT 23
J Resize Node im BorderPane AWT, Swing, JavaFX & SWT 7
J BorderPane Position AWT, Swing, JavaFX & SWT 3
A JavaFX Mittelkomponente im Borderpane skaliert nicht AWT, Swing, JavaFX & SWT 1
O JavaFX HBox und BorderPane.. AWT, Swing, JavaFX & SWT 5
wolfgang63 JavaFX Controls in einer BorderPane funktionieren nicht AWT, Swing, JavaFX & SWT 4
I JavaFX BorderPane ins Tree einfügen AWT, Swing, JavaFX & SWT 11
I Scene Builder - mehrere Seiten AWT, Swing, JavaFX & SWT 6
berserkerdq2 Mein Rechteck hat 4 Seiten, ich soll je nach dem, welche Seite berührt wurde, etwas ausführen, wie prüfe ich das? AWT, Swing, JavaFX & SWT 12
G JavaFX Slider in JavaFX beide Seiten beschriften AWT, Swing, JavaFX & SWT 2
B JavaFX PrinterJob mit mehreren Seiten AWT, Swing, JavaFX & SWT 0
M "(Buch-)Seiten" erstellen AWT, Swing, JavaFX & SWT 2
M Swing JSplitPane beide Seiten fixieren AWT, Swing, JavaFX & SWT 2
T Ein Seiten Resisable AWT, Swing, JavaFX & SWT 5
G Komplexe HTML-Seiten mit Swing Browsen AWT, Swing, JavaFX & SWT 5
A Seiten für freie LookAndFeels AWT, Swing, JavaFX & SWT 3
I JEditorPane vorladen der Seiten unterbinden AWT, Swing, JavaFX & SWT 2
B FXML GUI - Button ausblenden AWT, Swing, JavaFX & SWT 1
N JButton ausblenden AWT, Swing, JavaFX & SWT 2
R Swing Elemente verschieben sich im GBL beim Ein/Ausblenden AWT, Swing, JavaFX & SWT 0
1 JButton nach Klick ausblenden AWT, Swing, JavaFX & SWT 6
L Columns in JTable ein / ausblenden AWT, Swing, JavaFX & SWT 1
BRoll JButton Text nicht ausblenden ("...") AWT, Swing, JavaFX & SWT 2
S jLabel / jText beim starten ausblenden AWT, Swing, JavaFX & SWT 2
I Swing JTextField ausblenden -? AWT, Swing, JavaFX & SWT 6
B JButton ausblenden AWT, Swing, JavaFX & SWT 12
B JButton Rahmen ausblenden AWT, Swing, JavaFX & SWT 3
E BufferedImage Alphaknal ein- und ausblenden AWT, Swing, JavaFX & SWT 7
2 AWT Borderlayout: Grafikelemente ein und ausblenden AWT, Swing, JavaFX & SWT 2
C Swing JTable: Horizontale Linie bei einzelnen Zellen ausblenden AWT, Swing, JavaFX & SWT 5
E Swing JTable Spalten ausblenden?! AWT, Swing, JavaFX & SWT 3
A Swing Spalte in JTable ausblenden AWT, Swing, JavaFX & SWT 4
Airwolf89 Swing Tabs dynamisch ausblenden AWT, Swing, JavaFX & SWT 3
G JTree Knoten ein / ausblenden AWT, Swing, JavaFX & SWT 3
K JFreeChart im JScrollPane ausblenden AWT, Swing, JavaFX & SWT 2
K Swing JPanel ausblenden AWT, Swing, JavaFX & SWT 3
Dit_ Mit Button "Weiter" neues Panel laden, altes ausblenden... AWT, Swing, JavaFX & SWT 4
E JLabel nach Zeit X ausblenden AWT, Swing, JavaFX & SWT 12
H Panel ein- und ausblenden funktioniert nicht AWT, Swing, JavaFX & SWT 9
T JLabel in Frame ein- und ausblenden? AWT, Swing, JavaFX & SWT 2
F Titelleiste von JDialog ausblenden mit Synthetica L&F AWT, Swing, JavaFX & SWT 2
R JSplitPane automatisch ausblenden AWT, Swing, JavaFX & SWT 13
G Statusmeldung anzeigen und nach gewisser Zeit ausblenden AWT, Swing, JavaFX & SWT 4
T Composites ein- und ausblenden AWT, Swing, JavaFX & SWT 16
C JToolBar ein/ausblenden AWT, Swing, JavaFX & SWT 6
Z Applet ausblenden AWT, Swing, JavaFX & SWT 5
G JButton und andere J-Elemente: Markierung ausblenden AWT, Swing, JavaFX & SWT 6
G Suche 2 Componenten: Splitpane ausblenden / Stecknadel AWT, Swing, JavaFX & SWT 2
masta // thomas JTree - Knoten ausblenden. AWT, Swing, JavaFX & SWT 3
G JTable Rahmen ausblenden AWT, Swing, JavaFX & SWT 2
B Swing Logging: Ein/Ausblenden eines scrollenden JTextPane AWT, Swing, JavaFX & SWT 2
O Panels ein und ausblenden - geht das? AWT, Swing, JavaFX & SWT 3
S JDialog "X" ausblenden AWT, Swing, JavaFX & SWT 3
S JFrame "X" schaltfläche ausblenden AWT, Swing, JavaFX & SWT 15
M Tab von JTabbedPane ausblenden? AWT, Swing, JavaFX & SWT 6
J JButton Label ausblenden AWT, Swing, JavaFX & SWT 4
W JTree je nach selektion JPane ein und ausblenden AWT, Swing, JavaFX & SWT 7
S Koordinaten/Raster (ähnlich Schachbrett) anzeigen/ausblenden AWT, Swing, JavaFX & SWT 10
T JMenuBar ausblenden lassen aber Hotkeys sollen erhalten sein AWT, Swing, JavaFX & SWT 2
Luma Spalte einer Tabelle ausblenden AWT, Swing, JavaFX & SWT 8
S Fensterbuttons (min / max / close) ausblenden AWT, Swing, JavaFX & SWT 5
M Fenster wechseln bzw. ein/ausblenden AWT, Swing, JavaFX & SWT 2
D Knoten in JTree ausblenden. AWT, Swing, JavaFX & SWT 12
S Im JTable Zeilen ein-/ausblenden AWT, Swing, JavaFX & SWT 6
P JTree -> nodes ausblenden bzw nicht anzeigen AWT, Swing, JavaFX & SWT 7
P JDialog() (X) ausblenden, wie? AWT, Swing, JavaFX & SWT 3
T JTree ausblenden AWT, Swing, JavaFX & SWT 3

Ähnliche Java Themen

Neue Themen


Oben