JSplitPane设置可调整大小的false

时间:2011-08-15 13:10:44

标签: java swing border

如何让JSplitPane调整大小false?我不想调整JSplitPane的大小,我将其用于此窗格的边框。有没有其他方法可以创建相同的边框结构,将面板垂直分成两部分。

6 个答案:

答案 0 :(得分:24)

splitPane.setEnabled( false );

答案 1 :(得分:7)

您可以覆盖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 ;
    }
};

答案 2 :(得分:3)

考虑将Compound BordersEtchedBorder

一起使用

答案 3 :(得分:2)

为防止用户调整窗格大小,您还可以将分隔符大小设置为零。

splitPane.setDividerSize(0);

答案 4 :(得分: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);
    }
});

答案 5 :(得分:0)

如在@camickr答案注释中所述,禁用整个拆分窗格可以禁用包含的组件的交互行为(例如,它们不会在悬停时显示其交互式光标)

相反,如果使用BasicSplitPaneUI,则可以从用户界面禁用分隔线

public class MySplitPane extends JSplitPane {

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