软件开发

当前位置:首页 > 软件开发

《Java核心技术高级特性》(第六章)(续)

6.6构件组织器和装饰器

我们在这里通过展示一些帮助组织其他构件的构件来结束对高级Swing特性的讨论。这些构件包括分割面板、选项卡面板以及桌面面板。分割面板是将- -个区 域分割成多个边界可调整的区域的一种机制。选项卡面板使用选项卡分割器,允许用户浏览多个面板。桌面面板可用来实现显示多个内部框体的应用。最后,我们将讨论层,即可以叠加在其他构件之上的装饰器。

6.6.1分 割面板

分割面板可以将- -个构件分割成两部分,并且这两部分之间具有可调整的边界。图6-44显示了一个具有两个分割面板的框体。外部面板中的构件是垂直布局的,底部是一一个文本区,上面是另外- -个分割面板。上 面这个分割面板是水平分割的,左边是-一个列表,右边是-个包含图形的标签。

如果要构建一一个分割面板,需要设定一个方向,其值为JSp1itP ane . HORIZONTAL_SPLIT和JSp1itP ane . VERTICAL _SPLIT 中的之一,随后是两个构件。例如:

JSplitPane innerPane = new JSplitPane(JSplitPane.HORIZONTAL. SPLIT, planetList, planetInage);

这就是你要做的全部事情。如果你喜欢,可以为分割器添加“一触即展”的图标。你可以在图6-44中的顶层面板中看到这些图标。在Metal外观模式中,它们是小箭头的形式。如果你点中它们中的一个,那么分割器将会一直沿着箭头指定的方向移动,将其中的一-个面板完全展开。

如果要添加这项功能,请调用:

innerPane. setOneTouchExpandable(true);

当用户调整分割器的时候,“连续布局”特性会一直不断地刷新这两个构件的内容。这种情形看似经典,实则运行缓慢。你可以调用下面这个方法启动该功能:

innerPane. setContinuousLayout(true);

在这个示例程序中,我们将分割器设为默认状态(非连续布局)。拖动它的时候,只能移动一个黑色的轮廓。当释放鼠标完成这项操作时,才会刷新这些构件。

在简单明了的程序清单6-29中,组装了一个具有行星数据的列表框。当用户进行选择的时候,行星的图片便在右边显示了出来,并且在底部的文本区显示出对它的描述。当你运行这个程序的时候,请调整一下分割器,并试试--触即展和连续布局这些特性。

新梦想IT职业教育

新梦想IT职业教育

新梦想IT职业教育

API javax.swing.JSplitPane 1.2

●JSp1itPane( )

●JSpitPane(int direction)

●JSplitPane(int direction, boolean conti nuousLayout )

●JSplitPane(int direction, Component first, Component second )

●JSp1itPane(int direction, boolean cont i nuousL ayout, C omponent

first, Component second )

构建-一个新的分割面板。

参数: direction

HORIZONTAL_ SPLIT 或VERTICAL_ SPLIT

cont inousL ayout

如果为true,那么当移动分割器时,该构件是连续更新的

first,second

要添加的构件

●boolean isOneTouchExpandab1e()

●void setOneTouchE xpandab1e(boolean b)

获取并设置“一触即展”属性。如果设置了该属性,那么该分割器具有两个图标以完

全展开分割面板某一侧的构件。

●boolean i sCont i nuousLayout( )

●void setConti nuousL ayout(boolean b)

获取并设置“连续布局”属性。如果设置了该属性,那么当移动分割器的时候,该构

件是连续更新的。

●void setLef tComponent ( Component C )

●void setT opC omponent( Component c)

这两个操作具有同等效果,用于将c设置为分割面板中第- - 个构件。

●void setRi ghtC omponent ( Component c)

●void setBot t omC omponent ( C omponent c )

这两个操作具有同等效果,用于将c设置为分割面板中第二个构件。


相关内容

文章评论

表情

共 0 条评论,查看全部
  • 这篇文章还没有收到评论,赶紧来抢沙发吧~