如何使JSplitPane
不可调整大小?我不想调整JSplitPane
的大小,我只是希望将其用作面板的边框。是否有其他方法可以创建相同的边框结构,将面板垂直分成两部分。
splitPane.setEnabled( false );
您可以重写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 ;
}
};
为了防止用户调整窗格大小,您也可以将分隔条大小设置为零。
splitPane.setDividerSize(0);
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);
}
});
public class MySplitPane extends JSplitPane {
public void setResizable(boolean resizable) {
BasicSplitPaneUIui = (BasicSplitPaneUI) this.getUI();
ui.getDivider().setEnabled(resizable);
}
}
@TrogloGeek的答案最好,可以避免与禁用的分割窗格出现问题。
例如,如果您想要创建一个“one touch expandable”的窗格,但不可调整大小,您可以使用以下代码:
public class FixedExpandableSplitPane extends JSplitPane {
public FixedExpandableSplitPane(int orientation) {
super(orientation);
setOneTouchExpandable(true);
BasicSplitPaneUI ui = (BasicSplitPaneUI) this.getUI();
ui.getDivider().setEnabled(false);
}
}