Java JSplitPane集可调整大小为false

Java JSplitPane集可调整大小为false,java,swing,border,Java,Swing,Border,如何使JSplitPane可调整大小false?我不想调整JSplitPane,我将其用作此窗格的边框。有没有其他方法可以创建相同的边框结构来将面板垂直拆分为两部分。考虑与一起使用您可以覆盖JSplitPane方法getDividerLocation()和getLastDividerLocation,并返回一个常量值 JSplitPane split = new JSplitPane(JSplitPane.VERTICAL_SPLIT){ private final int locati

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

考虑与一起使用您可以覆盖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 ;
    }
};
final double pos=split.getDividers().get(0.getPosition();
split.getDividers().get(0.positionProperty().addListener(新的ChangeListener()){
@凌驾

public void changed(observevalue为防止用户调整窗格大小,还可以将分隔符大小设置为零

splitPane.setDividerSize(0);

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

相反,如果使用BasicSplitPaneUI,则可以从UI禁用分隔器

public class MySplitPane extends JSplitPane {

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

@Tapas Bose,无需扩展拆分窗格类。@camickr但这正是此解决方案所做的,它使用匿名类扩展JSpiltPane。禁用拆分窗格。请参见下文。但使用nimbus,如果禁用它,我看不到任何边框:(此解决方案很简单,但也很简单。如果子组件继承了enabled/disable的父级状态,则会禁用子组件。例如,jlist可能会被禁用,无法被选择。@Mgamerz,jlist在Windows 7上使用JDK8对我很好。setEnabled()方法仅适用于组件,而不适用于子组件。例如,有关JList的示例,请参阅上的Swing教程。@camickr当我禁用此拆分窗格时,我的一些子组件不再是可选的。我无法拾取JList中的项目,并且子拆分窗格没有光标更改,以指示它在仍然是可移动的情况下是可移动的。是否继续移动禁用按钮可使其再次正常工作。
splitPane.setDividerSize(0);
public class MySplitPane extends JSplitPane {

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