JSplitPane установить изменяемый размер ложь - PullRequest
9 голосов
/ 15 августа 2011

Как сделать JSplitPane для изменения размера false? Я не хотел изменять размер JSplitPane, я использовал его для границы этой панели. Есть ли другой способ создать такую ​​же структуру границ, чтобы разделить панель вертикально на две части.

Ответы [ 6 ]

24 голосов
/ 15 августа 2011
splitPane.setEnabled( false );
7 голосов
/ 15 августа 2011

Вы можете переопределить методы JSplitPane getDividerLocation() и getLastDividerLocation и вернуть постоянное значение.

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 ;
    }
};
3 голосов
/ 15 августа 2011

Рассмотрите возможность использования Составных границ с EtchedBorder

2 голосов
/ 17 октября 2016

Для предотвращения изменения размера панелей пользователями вы также можете установить размер разделителя на ноль.

splitPane.setDividerSize(0);
1 голос
/ 13 ноября 2014
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);
    }
});
0 голосов
/ 31 января 2019

Как отмечалось в комментариях к @camickr, отключение всей разделенной панели может отключить интерактивное поведение содержащихся компонентов (например, при наведении курсора они не будут отображать свои интерактивные курсоры)

Вместо этого, если используется BasicSplitPaneUI, вы можете отключить разделитель из пользовательского интерфейса

public class MySplitPane extends JSplitPane {

    public void setResizable(boolean resizable) {
        BasicSplitPaneUIui = (BasicSplitPaneUI) this.getUI();
        ui.getDivider().setEnabled(resizable);
    }
}
...