Java Swing 如何判断JSplitPane左侧面板是否折叠 如何判断右侧面板是否折叠
Java Swing 如何判断JSplitPane左侧面板是否折叠 如何判断右侧面板是否折叠
相同问题:
- 如何判断JSplitPane顶部面板是否折叠 如何判断底部面板是否折叠
- 如何判断JSplitPane面板1是否折叠 如何判断面板2是否折叠
监听PropertyChangeEvent
可以通过判断分割条的位置来判断左右侧面板是否被折叠:
- 当分隔条的位置为0的时候,左侧面板被折叠
- 但是由于窗体可大可小,折叠右侧面板时,分隔条的位置是不固定的。
- 如果窗体大小时固定的话,我们可以尝试折叠右侧面板,记下此时分隔条的位置Xxx。
- 当下次分隔条的位置为Xxx时,就说明右侧面板被折叠。
- 不过我发现
jSplitPane.getMaximumDividerLocation()
和jSplitPane.getMinimumDividerLocation()
相加起来的结果,就是折叠右侧面板时分隔条的坐标值。
- 如果窗体大小时固定的话,我们可以尝试折叠右侧面板,记下此时分隔条的位置Xxx。
Demo
1 | // 省略对象创建过程 |
运行效果
在中间拖动分隔条时
将分隔条拖动到中间,如下图所示:
此时控制台输出如下:
1 | 分隔条位置:104 |
将左侧面板折叠时
用鼠标点击分割条上的向左箭头,将左侧面板折叠起来,如下图所示:
此时控制台输出如下:
1 | 分隔条位置:0 |
可以看到,当我们折叠左侧面板时,控制台也多输出了--分隔条左侧面板被隐藏--
这条语句,
- 说明我们成功判断了左侧面板被折叠这种状态。
- 说明,分隔条为0的位置,就是左侧面板被折叠的状态。
右侧面板被折叠时
讲右侧面板折叠,如下图所示:
控制台输出如下:
1 | 分隔条位置:239 |
可以看到,在本程序中,当右侧面板被折叠时,分隔条的位置为239
,而分隔条最大位置max,加上分隔条最小位置min的和max+min的值也正好是239
。
由此可见,折叠右侧面板时,分隔条的位置为:jSplitPane.getMaximumDividerLocation()+jSplitPane.getMinimumDividerLocation()
所以,当分隔条的坐标为jSplitPane.getMaximumDividerLocation()+jSplitPane.getMinimumDividerLocation()
时,右侧面板被折叠。