博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
固定JSplitPane比例分割
阅读量:3592 次
发布时间:2019-05-20

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

从事Swing的开发已经有一年时间了,常常涉及一些Swing控件的使用,比如JSplitPane,有时要求以固定的比例来分割左右/上下子控件的固度/高度。

JSplitPane提供了这样一个方法来控制分割栏所处的位置:

public void setDividerLocation(double proportionalLocation)

    设置分隔条的位置为 JSplitPane 大小的一个百分比。
    根据 setDividerLocation(int) 来实现此方法。此方法以分隔窗格的当前大小为基础迅速改变窗格的大小。如果分隔窗格没有正确地实现并且不显示在屏幕上,此方法将不产生任何影响(新的分隔条位置将成为 0(当前的 size * proportionalLocation ))。
    参数:
    proportionalLocation - 指示百分比的双精度浮点值,从 0 (top/left) 到 1.0 (bottom/right)
    抛出:
    IllegalArgumentException - 如果指定的位置为 < 0 or > 1.0

 

我们来看下setDividerLocation(double proprtionalLocation)的实现:

Java代码  
  1. public void setDividerLocation(double proportionalLocation) {  
  2.     if (proportionalLocation < 0.0 ||   
  3.        proportionalLocation > 1.0) {  
  4.         throw new IllegalArgumentException("proportional location must " +  
  5.                                            "be between 0.0 and 1.0.");  
  6.     }  
  7.     if (getOrientation() == VERTICAL_SPLIT) {  
  8.         setDividerLocation((int)((double)(getHeight() - getDividerSize()) *  
  9.                                  proportionalLocation));  
  10.     } else {  
  11.         setDividerLocation((int)((double)(getWidth() - getDividerSize()) *  
  12.                                  proportionalLocation));  
  13.     }  
  14. }  
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(int)来实现的,呵呵~

 

下面是一个小小的示例:

Java代码  
  1. import java.awt.BorderLayout;  
  2. import java.awt.event.ComponentAdapter;  
  3. import java.awt.event.ComponentEvent;  
  4.   
  5. import javax.swing.JFrame;  
  6. import javax.swing.JPanel;  
  7. import javax.swing.JSplitPane;  
  8. import javax.swing.JTextArea;  
  9.   
  10. public class Test {  
  11.     public static void main(String[] args) {  
  12.         JFrame frame = new JFrame();  
  13.           
  14.         final JSplitPane splitPane = new JSplitPane();  
  15.         splitPane.add(new CustomPanel(), JSplitPane.LEFT);  
  16.         splitPane.add(new CustomPanel(), JSplitPane.RIGHT);  
  17.         splitPane.addComponentListener(new ComponentAdapter() {  
  18.             @Override  
  19.             public void componentResized(ComponentEvent e) {  
  20.                 splitPane.setDividerLocation(1.0 / 3.0);  
  21.             }  
  22.         });  
  23.         frame.add(splitPane);  
  24.           
  25.         frame.setTitle("Hello JSplitPane");  
  26.         frame.setSize(300300);  
  27.         frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
  28.         frame.setVisible(true);  
  29.     }  
  30. }  
  31.   
  32. class CustomPanel extends JPanel {  
  33.     private static int id = 0;  
  34.       
  35.     public CustomPanel() {  
  36.         setLayout(new BorderLayout());  
  37.         add(new JTextArea("" + id++), BorderLayout.CENTER);  
  38.     }  
  39. }  

转载地址:http://bmswn.baihongyu.com/

你可能感兴趣的文章
shell脚本 实现多进程
查看>>
pip异常与国内源配置 win10
查看>>
CentOS7 Failed to start LSB: Bring up/down networking. 已解决!!!
查看>>
hadoop环境安装随笔
查看>>
重复习简单基础算法(四):两数之和
查看>>
字节跳动之算法(一):万万没想到的聪明编辑
查看>>
字节跳动之算法(二):找零
查看>>
字节跳动之算法(三):二维平面整数点集最大值问题(50%-80%准确率)
查看>>
Maven无法正常通过快照Snapshots下载jar包问题
查看>>
如何安装SQL Server2017并且用Management Studio打开
查看>>
关于html中的UTF-8的字符编码问题
查看>>
关于OSI模型的简单总结
查看>>
关于html的div块的简单运用
查看>>
浅谈数据结构之:二叉树与二叉树的增删改查
查看>>
git的远程仓库配置
查看>>
大三感悟—IT行业对生活的影响
查看>>
前端学习笔记1:url、href和src的区别
查看>>
标题: 连接到服务器 ------------------------------ 无法连接到 .。 ------------------------------ 其他信息: 在与 SQL Se
查看>>
1.学生版阿里云简单配置和win7、win10专业版及win10家庭版的远程桌面的配置详解
查看>>
2.关于阿里虚拟服务器上的JDK和Tomcat的安装及如何通过IP地址简单的外网链接虚拟服务器
查看>>