- 1、本文档共16页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第六章 GUI编程
现在,实际编程中使用awt很少了,现大多用swing。
Awt分层概念:顶层容器-〉子容器,实现跨平台。
awt与swing的差别:
最根本的差别:
awt Swing 依赖的环境 OS
调用OS实现界面 JVM
调用JVM 优点 运行速度快,Windows窗口4个角的角度不同。 良好的跨平台;
因为JVM向上共同,
向下与平台相关。 调用的底层层度不一样 Awt到OS Swing到JVM,跨平台速度较慢。
抽象窗口的工具包
GUI外观漂亮、易学、易操作。Java与人交互是事件的响应,教材分为2章讲。
类体系结构
图形界面程序中,可使用各种各样的图形界面元素,如:文本框,按钮,列表框、对话框等,我们将这些图形界面元素称为GUI组件。
Awt为各种GUI组件提供了对应的Java组件类,这些组件类都是ponent的直接或间接子类。
Java awt的基础是基本组件和容器——
container类非常重要。
组件(又称为构件):不能容纳其他的组件,必须放置于容器中。
容器:也是一种比较特殊的组件,它可以容纳其他组件。如:窗口、对话框等。所有的容器类都是java.awt.Container的直接或间接子类。
Container类时Componet类的一个子类,由此可见容器本身也具有组件的功能和特点。
日常生活中,盆中放锅,锅里放碗,碗里放勺。
容器分为: 顶级容器:window、frame和dialog
中间级容器:panel、applet
常用容器:
①Panel:Applet布局管理器默认的是flowLayout。
②Frame:Dialog布局管理器默认的是BorderLayout。独立显示的顶级窗口。
③Canvas:画布
组件:
TextField:单行多列
TextArea多行多列
Container是组件,也是容器。
组件通常是GUI的可视部分,例如:按钮、标签。可通过将组件“添加”到容器中,来将组件置入显示界面。
通常,一个容器可包含一个或多个组件,并还可包含其他容器。
组件在容器中的位置由布局管理器确定。容器保存对特定LayoutManager实例的引用。容器调用LayoutManager来设置组件位置。确定组件尺寸的操作同样由LayoutManger代理实现。
由于LayoutManager通常负责组件在容器中的定位和尺寸,因此你自己不需要设置组件的位置和尺寸。如果你试图进行设置,如:使用setLayout(),setSize()或setBound()中的任何方法,LayoutManager将覆盖你的设置。
如果必须用非标准的布局管理器的方法来控制组件的位置和尺寸,可有下列方法在容器中禁用LayoutManager:
setLayout(null);
执行这一步后,必须使用组件的setLayout(),setSize()或setBound()方法在容器中进行定位。
由于不用窗口系统和字体尺寸的差别,这种解决方法可能是布局依赖于平台。最好的方法是创建一个新的LayoutManager类。
容器-框架
Frame类是Window类的子类,是一个包含标题和改变窗口大小顶角的特殊window类。
Frame:2个构造函数。
Frame(String)以String指定的标题创建一个新的、不可见的Frame对象。
setSize():改变框架的大小(为顶级窗口设置大小),该方法是从Componet类继承的。
若要使Frame可见,必须调用setVisible()和setSize()方法。
show():功能 == setVisible(),为顶级窗口设置可见度。
若不设定大小,就只显示窗体上title部分,其余部分不显示。
例1:通过下面示例来感受一下Java的图形界面编程。
import java.awt.*;
public class TestFrame {
public static void main(String agrs[]) {
Frame fr;
fr=new Frame(Hello Out There!);
fr.add(new Button(ok));
fr.setSize(300,300);
fr.setVisible(true);
}
}
注意:
在运行上面写的那段程序时,主调用类的main()执行fr.setVisible(true);语句后就退出了,程序的main线程也随之结束了。但程序并没有结束,窗口不仅正常显示在桌面上,而且我们还可对这些窗口进行一些常规操作,比如:拖动窗口、改变窗口等。
对于Java程序来说,只要还有一个前台线程在运行,整个进程就不会结束。这说明程序还有其他线程在运行。
那么其他线程是谁创建的?有时在什么时候创建的?
文档评论(0)