JSplitPane中setonetouchexpandable方法的实现机制

kingxiaokang 2011-08-08 02:45:16
我运用JSpliPane类,并且setonetouchexpandable(true),
在界面上面就会出现一个分隔条,分隔条上面有对应的三角形,点击三角形可以对分割的Panel进行隐藏,
现在我的问题是,我可不可以以通过自己写的事件来调用里面的什么函数达到同样的效果,而不需要点击分隔条上面的三角形,
现在急需要答案,谢谢大家了先。
...全文
432 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
十一月十七 2014-01-12
  • 打赏
  • 举报
回复
我的邮箱1120095258@qq.com
十一月十七 2014-01-12
  • 打赏
  • 举报
回复
我是新手 能不能把你的代码给我看看是什么效果呢 谢谢~\(≧▽≦)/~啦啦啦
kingxiaokang 2011-08-08
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 sunyiz 的回复:]

提醒:setDividerLocation 会自动调用 setLastDividerLocation 设置上一次位置

所以代码中应该在 setDividerLocation 之后,
再次手动调用 setLastDividerLocation 以正确记录你希望还原的位置
[/Quote]

太感谢了,这个方法是我想要的,十分感谢
sunyiz 2011-08-08
  • 打赏
  • 举报
回复
提醒:setDividerLocation 会自动调用 setLastDividerLocation 设置上一次位置

所以代码中应该在 setDividerLocation 之后,
再次手动调用 setLastDividerLocation 以正确记录你希望还原的位置
sunyiz 2011-08-08
  • 打赏
  • 举报
回复
这些事件是在 JSpliPane 的分割条的UI类中实现的
即这个类:javax.swing.plaf.basic.BasicSplitPaneDivider
如果楼主有兴趣可以研究下这个类中的 OneTouchActionHandler 类,
这个 OneTouchActionHandler 就是具体实现这些效果的类

其实它主要是用到了 JSpliPane 以下的方法:

setDividerLocation 设置分割条当前的位置
getDividerLocation 获得分割条当前的位置

setLastDividerLocation 设置分割条上一次的位置
getLastDividerLocation 获得分割条上一次的位置

getMaximumDividerLocation 获得分割条最大位置
getMinimumDividerLocation 获得分割条最小位置

思路就是:
1、想最大化,就先把“上一次的位置”设置成“当前位置”
然后把“当前位置”设置成“最大位置”

2、想最小化,就先把“上一次的位置”设置成“当前位置”
然后把“当前位置”设置成“最小位置”

3、想还原,就把“当前位置”设置成“上一次的位置”

4、注意从“最大化”直接到“最小化”
以及从“最小化”直接到“最大化”
时,不要覆盖之前记录的“上一次位置”

62,616

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧