欢迎来到天天文库
浏览记录
ID:6135434
大小:264.00 KB
页数:20页
时间:2018-01-04
《第五章 图形用户界面设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第五章图形用户界面设计§5.2组件一、java.awt包图1:AWT类层次结构图Component原子组件Container(容器类)ButtonLabelTextFieldWindowPannelFrameDialogAppletTextAreaCheckboxListChoice…..二、javax.swing包在javax.swing包中,主要包含两种类型的组件,顶层容器组件(包括:JFrame、JDialog、JWindow、JApplet)和轻量级组件。绝大部分Swing组件(主要是轻量级组件)都是Jcomponent
2、类的子类。Jcomponent类的层次图如下图所示:java.lang.Object→java.awt.Component→java.awt.Container→javax.swing.JComponentSwing中几乎所有的组件都是从JComponent继承而来的,这些组件都是由纯java代码所编写的,而有四个组件并非如此,它们是:JFrame、JDialog、JWindow、JApplet,它们分别继承自AWT中的相关类。继承关系如下图所示:JDialogJRootPaneWindowAppletFrameDialogJF
3、rameJRootPaneJWindowJRootPaneJAppletJRootPane说明:1、在Swing中,这四个组件为顶层容器组件,其余的Swing组件都必须依附在这四个组件之上才能显示出来。Swing中这四个组件虽然是其他Swing组件的源头,却并不直接用作容器,而是通过RootPaneContainer接口来取得相应的容器后,才能加入其他组件。例如:若想在JFrame中加入一个按钮,则必须先取得JFrame的容器才能放置这个按钮。具体而言,应先取得JFrame的内容面板(ContenetPane),然后将按钮加入该
4、ContenetPane中,而非直接加到JFrame上。假设:f是一个JFrame对象,则加入按钮btn按如下方式实现:f.getContentPane().add(btn);方法原型:ContainergetContentPane()2、LayeredPaneJLayeredPaneJRootPaneGlassPaneComponmentContentPaneContainerMenuBarJMenuBarSwing中的接口RootPaneContainer中定义了各种获取和设置容器的办法,这里的容器包括JRootPane、G
5、lassPane、LayeredPane和ContentPane,所以JRootPane组件是每个顶层容器都含有的子组件。JRootPane的组成结构如下图所示。3、JRootJPane使得这些顶层容器能加入其他组件,但它只是一个虚拟的容器,不能向其中加入任何的组件,而是要借助于其他几个容器。当建立一个顶层容器时,系统会自动为此顶层容器建立一个JRootPane组件,然后就可以用GlassPane、LayeredPane或ContentPane(MenuBar是可选的,若不选用,则ContentPane会占据整个版面)来添加其他
6、组件或是进行其他操作。GlassPane:透明面板,主要功能可以捕获JFrame上的事件。其默认值是不可见,可将其设置为可见。LayeredPane:层叠面板,本身是容器,可以直接向其中添加组件。例如,JFrame上的MenuBar或PopupMenu,或是其他有层叠关系的组件,就是使用LayeredPane的效果。ContentPane:最常用的容器,是LayeredPane中的一层,一般视为最底层,若再加入如ToolBar、MenuBar或PopupMenu等组件,系统会自动调整其层次关系。而若使用LayeredPane,程
7、序设计人员必须自行管理组件之间的层次关系,加重了程序维护的困难度,故ContentPane较之LayeredPane更常用。JFrame、JDialog、JWindow、JApplet通过实现接口RootPaneContainer来实现获取和设置容器,该接口中的获取和设置容器的方法如下表所示。表:RootPaneContainer接口中的方法方法描述ContainergetContentPane()获取ContentPaneJLayeredPanegetJLayeredPane()获取JLayeredPaneComponentg
8、etGlassPane()获取GlassPaneJRootPanegetRootPane()返回改组件的JRootPanevoidsetContentPane(ContainerContentPane)设置ContentPanevoidsetJLayeredPa
此文档下载收益归作者所有