使用布局管理器 呈现生动的JAVA程序界面.docVIP

使用布局管理器 呈现生动的JAVA程序界面.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
使用布局管理器 呈现生动的JAVA程序界面

如果你曾经为文本模式的应用程序设计过用户界面,那么你就会熟悉其中所涉及的问题。你需要获得每个标签、菜单、输入字段以及其他修饰元素,再把它们放到屏幕上显示,还要考虑每个东西的尺寸以及屏幕的尺寸。由于所有这些参数都是提前知道的,所以一些简单的算法就能够很好地完成这项工作。 但是,相同的情况却不会发生在图形应用程序上,因为每个元素最佳的尺寸和位置都依赖于多个因素,而这些因素在编辑的时候常常是不可知的,例如屏幕的分辨率、窗口和字体的大小等等。这就不可能手动计算其位置和尺寸了。 Java运用了一个原始的解决方案来解决这个问题——布局管理器,它能够让你只使用Java代码(不需要使用可视化工具)就设计出复杂的适合任何屏幕分辨率和尺寸的用户界面。 现在让我们来看一下布局管理器,看它们是如何工作的,以及如何创建自定义的布局管理器的,这样你就能够在必要的时候有效地使用那些Java平台自带的布局管理器,或者开发你自己的。我会假设你已经熟悉了AWT和/或Swing。 概述 布局管理器是一个对象,其唯一的任务就是将组件安放(也就是说,确定其尺寸和位置)进一个容器里(container)。每个容器都有一个java.awt.Container的子类,并提供一个方法——setLayout,用来指定要被使用的布局管理器。 在通常情况下,容器已经被指定了一个缺省的布局管理器,而且如果没有正确设置的话还可以通过setLayout来更改。而其他的东西则要使用一个专用的布局管理器,它们就不能够或者不应该被更改了,例如java.awt.ScrollPane和javax.swing.JRootPane。 布局管理器必须要实现java.awt.LayoutManager或者java.awt.LayoutManager2这两个接口。Java平台已经自带了很多布局管理器,所以你需要做的就是将正确的类实例化,再调用容器的setLayout,同时传递最新创建的布局管理器。 你甚至能够完全不使用布局管理器(例如将null传递给setLayout),但是在这种情况下,你必须使用java.awt.Component的正确方法(例如,setBounds、setLocation和setSize)来手动指定每个组件的位置和尺寸。 使用布局管理器 理解布局管理器是如何工作的最好方法是研究例子。Listing A里是一个非常简单的程序,它使用java.awt.BorderLayout布局管理器(也就是说,框架所缺省的布局管理器)来创建一个java.awt.Frame,并用一些按钮来填充它——每个BorderLayout区域内都有一个,BorderLayout.WEST这个区域除外,因为它由java.awt.Panel面板组件来填充。这个面板也会使用BorderLayout,并用按钮来填充。 运行这个程序的结果就是图A里的窗口。这都是java.awt.Window.pack方法的魔力。当这个包装方法被调用的时候,它就使用其首选的尺寸为窗口提供尺寸,这个首选的尺寸是由getPreferredSize方法返回的。 图A 一个简单的窗口首选尺寸 当getPreferredSize方法被调用用于某个组件的时候,它就会为这个组件返回最佳的尺寸(在按纽的情况下,这个尺寸就是在考虑到字体以及额外的空间和边界的大小之后,按钮标签的大小),但是当它为容器而被调用的时候,布局管理器就被调用,以计算其最佳的尺寸。 用于每个组件的布局管理器叫做getPreferredSize,它会使用某种算法(具体是哪种算法要依赖于布局管理器)来计算最终的尺寸。如果一个组件自身就是容器,那么这个进程就被循环使用。其最终的结果是,每个组件都获得了足够的空间以能够正确地显示。 一旦窗口的尺寸被给出,布局管理器就会被调用,以安置这些组件。这一次,由于尺寸已经被确定了,所以布局管理器只需要根据组件自己的逻辑和可用空间就可以给组件指定位置和尺寸了。 每当容器的尺寸发生改变或者影响其尺寸的某个组件的属性发生更改时,布局管理器也会再次被调用以安置这些组件。如果你重新改变示例程序的窗口尺寸,那么按纽也会相应地被重新安置。 如果你点击一个按钮,其字体的尺寸就会增大一倍,这会增加按钮标签的大小,并使得按钮自身也增大,最终这个窗口的布局就会像图B里的窗口一样。 图B 重新指定窗口和组件的尺寸 创建一个自定义的管理器 使用Java平台所提供的布局管理器,或者将它们组合起来使用,你就能够真正地实现任何布局。但是,这些所提供的布局管理器在有些情况下仍然不能满足你的要求。如果这种情况发生了,那么解决的方法就是创建你自己的自定义布局管理器。 幸运的是,创建一个布局管理器并不困难。如果你的布局管理器需要一些限制条件的话,你所需要做的就是去实现java

文档评论(0)

xcs88858 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8130065136000003

1亿VIP精品文档

相关文档