`
finux
  • 浏览: 202177 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

固定JSplitPane比例分割

    博客分类:
  • Java
阅读更多

从事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)的实现:

    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)来实现的,呵呵~

 

下面是一个小小的示例:

import java.awt.BorderLayout;
import java.awt.event.ComponentAdapter;
import java.awt.event.ComponentEvent;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JSplitPane;
import javax.swing.JTextArea;

public class Test {
	public static void main(String[] args) {
		JFrame frame = new JFrame();
		
		final JSplitPane splitPane = new JSplitPane();
		splitPane.add(new CustomPanel(), JSplitPane.LEFT);
		splitPane.add(new CustomPanel(), JSplitPane.RIGHT);
		splitPane.addComponentListener(new ComponentAdapter() {
			@Override
			public void componentResized(ComponentEvent e) {
				splitPane.setDividerLocation(1.0 / 3.0);
			}
		});
		frame.add(splitPane);
		
		frame.setTitle("Hello JSplitPane");
		frame.setSize(300, 300);
		frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		frame.setVisible(true);
	}
}

class CustomPanel extends JPanel {
	private static int id = 0;
	
	public CustomPanel() {
		setLayout(new BorderLayout());
		add(new JTextArea("" + id++), BorderLayout.CENTER);
	}
}

 

下面是Mac OS X的截图:

  • 大小: 138.6 KB
0
0
分享到:
评论
1 楼 naomibyron 2014-09-16  
谢谢!!!! 帮了我大忙

相关推荐

    JSplitPane

    JSplitPane

    JSplitPane的用法

    2. **分割条**:`JSplitPane`中的分割条允许用户通过鼠标拖动来调整两个面板的大小。分割条的位置可以通过`setDividerLocation`方法设置,而分割条的大小可以通过`setDividerSize`方法改变。 3. **布局调整**:`...

    swing分割窗口控件JSplitPane使用方法详解

    而getOrientation()方法则用于获取JSplitPane分割的方向,即垂直分割或水平分割。 JSplitPane构造函数的使用也非常关键。构造函数有多个重载版本,它们根据不同的参数来决定创建的JSplitPane具有哪些特定功能。例如...

    面板的分割java

    本文主要分为以下几个部分:理解JSplitPane、实现面板分割、整合其他组件如JList,以及如何增强应用安全性。 ### 一、理解JSplitPane `JSplitPane` 是Swing中的一个类,用于创建可以动态调整大小的分割窗口。它...

    Java Swing中的工具栏(JToolBar)和分割面版(JSplitPane)组件使用案例

    在Swing中,JToolBar和JSplitPane是常用的两个组件,它们分别用于创建工具栏和分割面板。本文将详细介绍这两个组件的使用,并提供相应的代码示例和功能描述。 首先,JToolBar是Swing中用于创建工具栏的组件。工具栏...

    窗口视图的分割演示程序.rar_窗口分割_视图分割

    JSplitPane的主要属性包括分隔条的位置、分割模式(是否允许用户调整大小)以及预设的组件大小比例。通过调整这些属性,开发者可以创建出满足特定需求的分割视图。 总的来说,这个“窗口视图的分割演示程序”是一个...

    java swing-JSplitPane的使用

    JSplitPane是Swing库提供的一个分割面板组件。它可以在图形界面中创建两个子组件,并允许用户通过拖动分割条来调整子组件的大小。

    实例22 分割一个面板(java绝对新手实例)

    在Java编程语言中,"分割一个面板"通常指的是使用Swing库中的JSplitPane组件来创建用户界面。JSplitPane允许我们将屏幕空间分为两个或更多个可调整大小的部分,这样用户就可以根据自己的需求动态调整各个区域的大小...

    kk.rar_jsplitpane UI_成绩管理系统

    【jsplitpane】是Java Swing库中的一个组件,它在用户界面设计中扮演着重要的角色,允许用户在界面上创建可调整大小的面板分割,从而在一个窗口中展示两个或更多的内容区域。 在Java Swing中,`JSplitPane` 是一种...

    Java高级程序设计:第10章-图形界面起步-容器和布局.pptx

    本章目标;常见的GUI组件;Swing vs AWT;GUI API;Container(容器);Component(组件类);Helper(辅助类);GUI开发的层次结构 ;...分割条面板JSplitPane;分割条面板JSplitPane;;菜单;使用菜单;Color类;Font类;ImageIcon类

    Swing拆分窗格控件JSplitPane使用详解

    JSplitPane允许用户通过一个可拖动的分割条来调整两个(或更多)组件之间的空间分配。 JSplitPane的基本使用包括以下几个关键知识点: 1. 导入必要的包 首先,我们需要导入Swing和AWT相关的类,以确保可以使用...

    窗体分割实例

    `JSplitPane`提供了类似于Windows `SplitContainer`的功能,允许开发者指定分割方向,并且可以设置分隔条的移动模式,如固定位置、单向移动等。在JavaFX中,有`SplitPane`类,其用法与Java Swing类似。 对于Web应用...

    flex4 实现分隔栏 类似java里面的JSplitPane的功能

    NULL 博文链接:https://silentwu.iteye.com/blog/1605617

    获得分割栏获得分割栏获得分割栏

    此外,熟悉分割栏的使用也有助于理解其他编程环境中的类似概念,如Qt的QSplitter或Java的JSplitPane。 在提供的压缩包文件“1.20 如何获得任务栏窗口”中,虽然没有详细内容,但我们可以猜测这可能是关于如何获取和...

    SplitPanel的使用

    `JSplitPane`是Java Swing中的一个容器,它可以容纳两个或更多的组件,这些组件被水平或垂直地分割。默认情况下,`JSplitPane`提供了一个分隔条,用户可以通过拖动这个分隔条来改变两侧组件的显示面积。在`myEclipse...

    窗口分割Demo

    - **编程实现**:在编程语言如C#、Java、Python等中,可以通过库或框架提供支持,比如.NET Framework中的Panel控件、Java Swing的JSplitPane或Qt的QSplitter等。 - **第三方控件**:像"Flat-Splitter"这样的文件...

    商业编程-源码-视图分割源代码 SplitterTog_source.zip

    例如,Qt框架中的QSplitter,Java Swing的JSplitPane,或者wxWidgets的wxSplitterWindow。 2. **拖放功能**:用户应能通过拖动分隔条来改变视图的大小。这需要实现事件监听和处理,以及对分隔条移动的响应。 3. **...

    基于Swing的类似编辑器的界面

    总结来说,这个基于Swing的编辑器界面项目涉及了Swing的核心组件和功能,包括JTabbedPane(可关闭的选项卡面板)、文件操作、JSplitPane(分割面板)和JScrollPane(滚动面板)。通过学习和实践这些知识,开发者能够...

    java swing笔记

    这里创建了一个垂直分割的`JSplitPane`实例,参数`true`表示是否显示连续的分割条,即使两个组件之一为空。`jScrollPane1`和`jScrollPane2`是被分割的两个组件。 **2. 设置分割条的位置** ```java jSplitPane1....

    swing界面设计之Layou

    在这个示例中,我们创建了一个水平分割的`JSplitPane`,并设置了初始的分割位置。用户可以通过拖动分割线来调整两个窗格的大小比例。 ### 结论 Swing提供了丰富的布局管理器和组件,通过合理选择和配置,可以轻松...

Global site tag (gtag.js) - Google Analytics