博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JSplitPane分割线固定问题
阅读量:6909 次
发布时间:2019-06-27

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

hot3.png

     最近在做一个OpenSwing的项目,需要将网页版本变成单机版本,在使用JSplitPane的时候,分割线总是自由的变动,使得效果不好看,所以我查过相关资料,终于解决这个问题了。

     JSplitPane.setEnabled(false);      // 禁止拖动分割条

     JSplitPane.setDividerLocation(double proportionalLocation);           // 设置分割比例

      注意:必须在frame.setVisible(true);之后才有效

      理由:根据 setDividerLocation(int) 来实现此方法。此方法以分隔窗格的当前大小为基础迅速改变窗格的大小。如果分隔窗格没有正确地实现并且不显示在屏幕上,此方法将不产生任何影响(新的分隔条位置将成为0(当前的 size *proportionalLocation ))。

     参数:
     proportionalLocation - 指示百分比的双精度浮点值,从 0 (top/left) 到 1.0 (bottom/right)
     抛出: - 如果指定的位置为 < 0 or > 1.0

     看完后没什么概念。。。只觉得写的不是那么直白,也许确有什么猫腻在里边。特别是"如果分隔窗格没有正确地实现并且不显示在屏幕上,此方法将不产生任何影响"这句,没大理解。。。

     因而去看看JSplitPane的源码。关于setDividerLocation大致如下:

     public void setDividerLocation(double proportionalLocation) {

         if (proportionalLocation < 0.0 || proportionalLocation > 1.0) {
             throw new IllegalArgumentException("proportional location must "
"be between 0.0 and 1.0.");
        }
        if (getOrientation() == VERTICAL_SPLIT) {
            setDividerLocation((int)((double)(getHeight() - getDividerSize()) *
            proportionalLocation));
        }
        else {
            setDividerLocation((int)((double)(getWidth() - getDividerSize()) *
            proportionalLocation));
        }
    }

    这下有些明白了,setDividerLocation(double)这个函数会用到getWidth()或者getHeight()这样的函数,而java桌面程序在没有主窗体setVisible之前,如果使用布局,尚未validate()和paint()每个组件的宽和高默认都是0。也就是说一定要在主窗体setVisible(true)之后再使用setDividerLocation(double)才会有效。

转载于:https://my.oschina.net/u/869416/blog/119219

你可能感兴趣的文章
socket通信中select函数的使用和解释
查看>>
MySQL order by后对其他索引的干扰,导致优化器走错索引
查看>>
大学生IT博客大赛技术50强获奖图书
查看>>
学习OpenGL
查看>>
C Primer Plus 第四章 编程练习
查看>>
httpd-2.4源码编译安装
查看>>
鼠标选中一段文字变成C的解决
查看>>
linux杀毒软件clamav安装与使用
查看>>
html中div的换行
查看>>
Merge Sorted Array
查看>>
删除数据库中重复项
查看>>
2.2-shell数组
查看>>
extjs 手风琴布局样式修改
查看>>
fragment新特性
查看>>
三星 A8开发板 杂记
查看>>
linux如何开启telnet服务
查看>>
实战:XtraBackup for mysql 5.6自动还原脚本
查看>>
CentOS https 客户端证书制作
查看>>
hardware information
查看>>
针对云安全从业者的指南系列一:云安全实施企业面临的背景
查看>>