- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
JAVA6吴进
第六章 图形用户界面的设计与实现 AWT (Abstract Window Toolkit) 组件一律是 heavyweight Swing 组件大部分都是 lightweight Swing 是架构在 AWT 之上的,没有 AWT 就没有 Swing。 程序员可以根据自己的习惯选择使用 AWT 或者是 Swing。但是,最好不要二者混用,除开显示风格不同不说,还很可能造成层次 (Z-Order) 错乱。 一、图形用户界面的构成 容器 容器是用来组织其他界面成分和元素的单元。 控制组件 与容器不同,控制组件是图形用户界面的最小单位之一,它里面不再包含其他的成分. 用户自定义成分 组成 容器(Container ) 容器的主要作用和特点有: 容器有一定的范围。 容器有一定的位置。这个位置可以是屏幕四角的绝对位置,也可以是相对于其他容器边框的相对位置。 容器通常都有一个背景,这个背景覆盖全部容器,可以透明,也可以指定一幅特殊的图案,使界面生动化和个性化。 容器中可以包含其他的许多界面成分和元素。当容器被打开显示时,它上面的所以成分和元素也同时显示出来,当容器被关闭和隐藏时,它所包含的成分和元素也一起被隐藏。 容器可以按一定的规则来物理地安排它所包含的元素,如这些元素的相对位置关系、它们的的前后排列关系等。 容器可能被包含在其他容器之中。 控制组件 目前常用的控制组件有: 标签(Label) 按钮(Button) 文本编辑区(TextField,TextArea) 复选框(Checkbox) 单选按钮(CheckboxGroup或RadioButton) 下拉列表(List或Choice) 用户自定义部分 除了标准的图形界面元素,编程人员还可以根据用户需要设计一些用户自定义的图形界面成分,例如绘制一些几何图形,使用标志图案等。 用户自定义成分由于不能像标准界面元素一样被系统识别和承认,所以通常只能起到装饰、美化等作用,而不能响应用户的动作,不具有交互功能。 二、Z-order AWT 和 Swing 的 Z-order 规则一样: 组件的 Z-order 一定比其容器来得高,组件一定位于容器上层。 同一个容器的两个组件中,越早加入容器者其 Z-order 越高,位置越上层。 但是如果混合使用 AWT 和 Swing,上述第二条规则就不一定了。 比方说,在某容器内先加入一个 Swing 的组件,再加入一个 AWT 的组件,且此二组件有重叠的区域,结果却是 AWT 组件出现在 Swing 组件上面。 三、布局管理器 在实际编程中,我们每设计一个窗体,都要往其中添加若干组件。为了管理好这些组件的布局,我们就需要使用布局管理器 Java在布局管理上采用了容器和布局管理分离的方案。 容器只管将其组件放入其中(使用add()方法)。 组件如何放置的布局管理交给专门的布局管理器类(LayoutManager)来完成: setLayout(new 布局设计方式()); 布局设计方式 FlowLayout 将组件按从左到右而后从上到下的顺序依次排列,一行不能放完则折到下一行继续放置。 BorderLayout 将组件按东、南、西、北、中五个区域放置,每个方向最多只能放置一个组件。 CardLayout 将组件象卡片一样放置在容器中,在某一时刻只有一个组件可见。 GridLayout 形似一个无框线的表格,每个单元格中放一个组件。 FlowLayout(流式布局) 构造函数 FlowLayout(); FlowLayout(int align); FlowLayout(int align,int hgap, int vgap); align可取值: FlowLayout.LEFT 、FlowLayout.CENTER 、 FlowLayout.RIGHT hgap横间距,象素为单位 vgap纵间距,象素为单位 BorderLayout(边框布局) 构造函数 BorderLayout(); //各组件纵、横间距为0 BorderLayout(int hgap, int vgap); //hgap横间距,vgap纵间距, //象素为单位 add (组件,位置); 位置可取值: BorderLayout.NORTH[WEST,CENTER,EAST,SOUTH] CardLayout(边框布局) add(组件名称, 组件 ); 调用CardLayout的方法: Show(容器名,组件名) first(),last(),next(),previous()和show()方法均可使卡 片成为可见的。 GridLayout(网格布局) 构造函数 Gridout(行数,列数); Gridout(行数,列数, int hgap, int
文档评论(0)