Breite eine JSplitPane endgültig festsetzen



  • Hallo Forum,
    ich möchte drei Flächen in einer GUI haben, bei denen ich die Größen per Maus ändern kann. Im Prinzip ein dreigeteiltes JSplitPane. Das habe ich mir wie folgt gebastelt (jede Fläche hat ein Drittel der gesamten Breite):

    JSplitPane splitPane2 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new JPanel(), new JPanel());
    splitPane2.setResizeWeight(0.5);
    
    JSplitPane splitPane1 = new JSplitPane(JSplitPane.HORIZONTAL_SPLIT, new JPanel(), splitPane2);
    splitPane1.setResizeWeight(0.33);
    
    getContentPane().add(_splitPane1);
    

    Im leeren Zustand sieht es OK aus. Jedes Feld hat ca. ein Drittel der Fensterbreite. Wenn ich jetzt allerdings in das erste Feld ein JTabbedPane einsetze ...

    JTabbedPane tabbedPane = new JTabbedPane()
    tabbedPane.add("Erstes Feld", new JScrollPane(new JTree(rootNode)));
    splitPane1.setLeftComponent(tabbedPane);
    

    ... dann breitet sich das erste Feld auf die halbe verfügbare Breite aus (erstes Feld: 50% der Breite, die anderen beiden ca. je 25%).
    Wie kann ich es erreichen, dass das Feld nicht breiter als ein Drittel wird? Ein zusätzliches Setzen von setDividerLocation bringt auch nur am Anfang den gewünschten Effekt und wird nach dem Einsetzen der Komponente nicht mehr beachtet.

    Vielen Dank.



  • Hi,

    ich weiß zwar keine Lösung, aber mir ist da spontan setPreferredSize(Dimension preferredSize) eingefallen. Vielleicht bringt das was...

    Beste Grüße
    Jan



  • Ich glaube das wäre für mich keine Lösung, da nach einer Fenstergrößen-Änderung die Breiten neu gesetzt werden müssten. Ich suche nach einer Lösung, die das von mir gewählte Verhältnis beibehält.


Anmelden zum Antworten