博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于JSplitPane在setDividerLocation(int)之后,折叠时大小变化的问题
阅读量:5167 次
发布时间:2019-06-13

本文共 1696 字,大约阅读时间需要 5 分钟。

      这几天在所Swing开发,遇到一个很奇怪的事情,在做的产品中,有一个在JFrame中折叠查询条件和结果的功能要实现,于是自然而然地用到JSplitPane,按照资料中写的那样,在setDividerLocation(150)之后,初始化时,分隔的位置是没问题的,但是在折叠查寻条件完再展开时,发现分隔的那个条位置网上挪了一点,Debug发现JSplitPane.getDividerLocation()的值变为了134。虽然不影响产品的使用,但是总觉得不爽。

      由于产品根据传参分两种查询,一种是传统的按查询条件,另一种是按照预先配好的查询条件,在上面一项项列出来,由用户自行勾选相应的项去查询。传统方式的没有这个问题,只有用户自行勾选的那种方式存在问题,最诡异的是两种查询,在初始化时JSplitPane的代码都是一样的。

      这个问题我在百度和Google上查到了夜里两点,一直没有一个明确地解释,今天早上来到单位,拿着Swing的书专门地看了下这个,发现有一个“最小尺寸和首选尺寸”的说明,这里面虽然没有明确解释了我所遇到的问题,但是给我指明了一下方向。

      Debug时我把JSplitPane上半部分的的height打了出来,发现两种查询方式,初始值都是149(收起后高度是1),但是折叠展开之后,一个还是149,另一个变成了134,于是我把上半部分的大小做了一个限定,于是问题解决了。不过我还是不太清楚JSplitPane具体是怎么来做的,为什么在setDividerLocation(150)之后,还要根据我JPanel的大小来调整dividerLocation,看来等忙完这阵子还需要好好看看这个问题。

contentPane = (JPanel)this.getContentPane();    contentPane.setLayout(new BorderLayout());    this.setContentPane(contentPane);    Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();    this.setSize(new Dimension(screenSize.width, screenSize.height-55));    this.setExtendedState(Frame.MAXIMIZED_BOTH);    queryPane.setLayout(new XYLayout());    tablePane.setLayout(new XYLayout());    queryPane.setMinimumSize(new Dimension(screenSize.width, 149)); // 加上这句就好了    jSplitPane1.add(queryPane,JSplitPane.TOP);    jSplitPane1.add(tablePane,JSplitPane.BOTTOM);        this.getContentPane().add(jSplitPane1,  BorderLayout.CENTER);    jSplitPane1.setOrientation(JSplitPane.VERTICAL_SPLIT);        jSplitPane1.setOneTouchExpandable(true);    jSplitPane1.setDividerLocation(150);        jSplitPane1.setContinuousLayout(true);    jSplitPane1.setEnabled(false);    int bottomYGap = screenSize.height-150-112;//下方表格的高度

转载于:https://www.cnblogs.com/Cratical/archive/2011/07/28/2119187.html

你可能感兴趣的文章
【MySQL性能优化】MySQL常见SQL错误用法
查看>>
Vue2全家桶之一:vue-cli(vue脚手架)超详细教程
查看>>
Struts 2 常用技术
查看>>
树形DP
查看>>
Springboot实现上传文件接口,使用python的requests进行组装报文上传文件的方法
查看>>
python flask解决上传下载的问题
查看>>
语法测试
查看>>
CES1
查看>>
CES2
查看>>
python 数据类型_字典和集合
查看>>
一种并行随机梯度下降法
查看>>
文件方式实现完整的英文词频统计实例
查看>>
ListControl的用法
查看>>
单个SWF文件loading加载详解(转)
查看>>
SQLServer中的CTE通用表表达式
查看>>
linux第1天 fork exec 守护进程
查看>>
Ajax原理学习
查看>>
最新最潮的24段魔尺立体几何玩法(2016版)
查看>>
C# 3.0 LINQ的准备工作
查看>>
CodeForces - 449D Jzzhu and Numbers
查看>>