2011-08-15 12 views
7

Jak zmienić rozmiar JSplitPane na false? Nie chciałem zmienić rozmiaru JSplitPane, użyłem go do obramowania tego panelu. Czy istnieje inny sposób tworzenia tej samej struktury granicznej, aby podzielić panel pionowo na dwie części.JSplitPane set resizable false

+3

Wyłączanie podzielonego panelu. Zobacz poniżej. – camickr

Odpowiedz

7

można zastąpić JSplitPane méthodes getDividerLocation() i getLastDividerLocation i zwraca wartość stałą.

JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT){ 
    private final int location = 100; 
    { 
     setDividerLocation(location); 
    } 
    @Override 
    public int getDividerLocation() { 
     return location ; 
    } 
    @Override 
    public int getLastDividerLocation() { 
     return location ; 
    } 
}; 
+0

@Tapas Bose, nie ma potrzeby rozszerzania klasy podziału. – camickr

+0

@camickr Ale to właśnie robi to rozwiązanie, rozszerza JSpiltPane o anonimową klasę. –

22
splitPane.setEnabled(false); 
+0

, ale z nimbusem nie widzę granicy, jeśli jest wyłączona. :( – oliholz

+0

to rozwiązanie jest proste i niesamowite – cseppento

+0

To wyłącza podkomponenty, jeśli odziedziczą status rodzicielski włączonego/wyłączonego, np. Jlista może być wyłączona z możliwości jej wybrania – Mgamerz

1
final double pos = split.getDividers().get(0).getPosition(); 
split.getDividers().get(0).positionProperty().addListener(new ChangeListener<Number>() { 
    @Override 
    public void changed(ObservableValue<? extends Number> arg0, 
      Number arg1, Number arg2) { 
     split.getDividers().get(0).setPosition(pos); 
    } 
}); 
2

Dla zapobiegania użytkownikom zmianę rozmiaru okienka można również ustawić rozmiar dzielnik zera.

splitPane.setDividerSize(0);