论文部分内容阅读
摘要:本文以笔者的实际应用项目为基础,探讨如何在MDI风格的Java项目中灵活运用JInternalFrame和JDesktopPane,使我们的程序更加具有漂亮的外观。
关键词:JInternalFrame;Swing;MDI
中图分类号:TP311 文献标识码:A 文章编号:1007-9599 (2012) 22-0000-02
MDI(Multiple Document Interface,多文档界面风格界面)窗口处理方式在微软的Office中使用非常广泛,它为操作多个文档提供了很大的方便,这种方式也被计算机软件的使用者普遍接受。Java应用程序中要实现MDI窗口必须采用Swing的JInternalFrame和JdesktopPane来实现。
1 JInternalFrame和JdesktopPane简介
JInternalFrame的使用跟JFrame几乎一样,可以最大化、最小化、关闭窗口、加入菜单等功能;唯一不同的是JInternalFrame是lightweight component,也就是说JInternalFrame不能单独出现,必须依附在最上层组件上。由于这个特色,JInternalFrame能够利用java提供的Look and Feel功能作出完全不同于原有操作系统所提供的窗口外型,也比JFrame更具有弹性。
如下图1所示,一般我们会将Internal Fram加入Desktop Pane方便管理,Desktop Pane是一种特殊的Layered pane,用来建立虚拟桌面(Vitual Desktop)。它可以显示并管理众多Internal Frame之间的层次关系。
通过查看API文档可知:JInternalFrame(String title,boolean resizable,boolean closable,boolean maximizable,boolean iconifiable);[1]它可建立一个可关闭、可更改大小、具有标题、可最大化与最小化的Internal Frame。它必须加入JDesktopPane中才有效,它产生internal frame event与JDesktopPane协同工作,由JDesktoPane来管理。
使用的基本步骤是:
2 应用中的问题与解决方案
在窗口运行过程中,每个内部窗口最大化后都是独立的标题栏和图标,不能统一回到主窗口的菜单栏上,特别影响美观,与我们windows上的应用显得格格不入。这是因为JInternalFrame是一个轻量级组件,必须依附在容器之中,它的大小不可能超出JDesktopPane。为了获得想要的效果,我们对JInternalFrame的UI进行了改写。核心代码如下所示。[2]
SaleBackFrame类继承自JInternalFrame,为它添加一个ComponentListener实现窗口最大化事件的监听。当组件大小改变时,调用componentResized方法,然后判断如果组件大小是isMaximum()的,则将绘有关闭按钮的那一条面板NorthPane隐藏。并定义hideNorthPane()和showNorthPane()两个方法来实现单击图标按钮时进行切换控制。下图2是内部窗体在标准状态下,当我们单击最大化按钮后就可以见到下图3所示的效果了。
3 总结
通过对原有项目的内部窗口的重写,用户体验得到了提高,筆者参与的企业进销存项目获得了客户的充分肯定,文中关于JInternalFrame和JdesktopPane的使用要点,供大家探讨。
参考文献:
[1]Java 2 核心技术,卷I[M].Horstmann,叶乃文.北京:机械工业出版社,2006.
[2]使用JInternalFrame实现MDI[EB/OL].2008[2011-1-25].http://devbean.blog.51cto.com/.
[作者简介]胡胜丰(1976-),男,湖南桃江人,硕士研究生,研究方向为信息化基础软件平台和关键技术。
关键词:JInternalFrame;Swing;MDI
中图分类号:TP311 文献标识码:A 文章编号:1007-9599 (2012) 22-0000-02
MDI(Multiple Document Interface,多文档界面风格界面)窗口处理方式在微软的Office中使用非常广泛,它为操作多个文档提供了很大的方便,这种方式也被计算机软件的使用者普遍接受。Java应用程序中要实现MDI窗口必须采用Swing的JInternalFrame和JdesktopPane来实现。
1 JInternalFrame和JdesktopPane简介
JInternalFrame的使用跟JFrame几乎一样,可以最大化、最小化、关闭窗口、加入菜单等功能;唯一不同的是JInternalFrame是lightweight component,也就是说JInternalFrame不能单独出现,必须依附在最上层组件上。由于这个特色,JInternalFrame能够利用java提供的Look and Feel功能作出完全不同于原有操作系统所提供的窗口外型,也比JFrame更具有弹性。
如下图1所示,一般我们会将Internal Fram加入Desktop Pane方便管理,Desktop Pane是一种特殊的Layered pane,用来建立虚拟桌面(Vitual Desktop)。它可以显示并管理众多Internal Frame之间的层次关系。
通过查看API文档可知:JInternalFrame(String title,boolean resizable,boolean closable,boolean maximizable,boolean iconifiable);[1]它可建立一个可关闭、可更改大小、具有标题、可最大化与最小化的Internal Frame。它必须加入JDesktopPane中才有效,它产生internal frame event与JDesktopPane协同工作,由JDesktoPane来管理。
使用的基本步骤是:
2 应用中的问题与解决方案
在窗口运行过程中,每个内部窗口最大化后都是独立的标题栏和图标,不能统一回到主窗口的菜单栏上,特别影响美观,与我们windows上的应用显得格格不入。这是因为JInternalFrame是一个轻量级组件,必须依附在容器之中,它的大小不可能超出JDesktopPane。为了获得想要的效果,我们对JInternalFrame的UI进行了改写。核心代码如下所示。[2]
SaleBackFrame类继承自JInternalFrame,为它添加一个ComponentListener实现窗口最大化事件的监听。当组件大小改变时,调用componentResized方法,然后判断如果组件大小是isMaximum()的,则将绘有关闭按钮的那一条面板NorthPane隐藏。并定义hideNorthPane()和showNorthPane()两个方法来实现单击图标按钮时进行切换控制。下图2是内部窗体在标准状态下,当我们单击最大化按钮后就可以见到下图3所示的效果了。
3 总结
通过对原有项目的内部窗口的重写,用户体验得到了提高,筆者参与的企业进销存项目获得了客户的充分肯定,文中关于JInternalFrame和JdesktopPane的使用要点,供大家探讨。
参考文献:
[1]Java 2 核心技术,卷I[M].Horstmann,叶乃文.北京:机械工业出版社,2006.
[2]使用JInternalFrame实现MDI[EB/OL].2008[2011-1-25].http://devbean.blog.51cto.com/.
[作者简介]胡胜丰(1976-),男,湖南桃江人,硕士研究生,研究方向为信息化基础软件平台和关键技术。