返回列表 发帖

SUN JAVA标准教程

第八章  建立GUIs
  本模块讲述图形用户界面的建立及布局。它介绍了抽象视窗工具包,一种建立GUIs的类包。
第一节  相关问题
  讨论—下述问题与本模块中出现的材料相关。
-Java编程语言是一个具有独立平台的编程语言。GUI环境通常是从属平台。那么,为了使GUI平台独立,Java技术是如何接近这个主题的呢?
第二节  目 的
    完成本模块学习时,将能:
-描述AWT包及其组件
-定义Container、Component及Layout Manager等术语,以及它们是如何在一起来建立GUI的
-使用Layout Manager
-使用Flow、Border、Gird及Card布局管理器来获得期望的动态布局
-增加组件到Container
-正确运用Frame及Panel容器
-描述如何使用嵌套容器来完成复杂的布局
-在Java软件程序中,确认如下内容:
-容器
-相关布局管理器
-所有组件的布局层次
第三节  AWT
AWT
-提供基本的GUI组件,用在所有的Java applets及应用程序中
-具有可以扩展的超类,它们的属性是继承的,类也可被抽象化
-确保显示在屏幕上的每个GUI组件都是抽象类组件的子类
-Contaner,它是一个Component的抽象子类,而且包括两个子类
-Panel
-window
    AWT提供用于所有Java applets及应用程序中的基本GUI组件,还为应用程序提供与机器的界面。这将保证一台计算机上出现的东西与另一台上的相一致。
    在学AWT之前,简单回顾一下对象层次。记住,超类是可以扩展的,它们的属性是可继承的。而且,类可以被抽象化,这就是说,它们是可被分成子类的模板,子类用于类的具体实现。
    显示在屏幕上的每个GUI组件都是抽象类组件的子类。也就是说,每个从组件类扩展来的图形对象都与允许它们运行的大量方法和实例变量共享。
    Container是Component的一个抽象子类,它允许其它的组件被嵌套在里面。这些组件也可以是允许其它组件被嵌套在里面的容器,于是就创建了一个完整的层次结构。在屏幕上布置GUI组件,容器是很有用的。Panel是Container的最简单的类。Container的另一个子类是Window。
第四节  Java.awt包
    Java.awt包包含生成WIDGETS和GUI组件的类。该包的基本情况如下图所示。黑体字的类表明该模块的要点。

TOP

SUN JAVA标准教程

) {
6.MyFrame fr = new MyFrame("Hello Out There!");
7.fr.setSize(500,500);
4.fr.setBackground(Color.blue);
5.        fr.setVisible(true);
6.     }
7.    public MyFrame (String str) {
8.         super(str);
9.    }
10.}
    上述程序创建了下述框架,它有一个具体的标题、大小及背景颜色。

TOP

SUN JAVA标准教程

) {
10.        FrameWithPanel fr =
11.        new FrameWithPanel ("Frame with Panel");
12.        Panel pan = new Panel();
13.        
14.        fr.setSize(200,200);
15.        fr.setBackground(Color.blue);
16.        fr.setLayout(null); //override default layout mgr
17.        pan.setSize (100,100);
18.        pan.setBackground(Color.yellow);
19.
20.        fr.add(pan);
21.        fr.setVisible(true);
22.     }
23.    ....
24.

TOP

SUN JAVA标准教程

) {
9.        ExGui guiWindow = new ExGui();
10.        guiWindow.go();
11.      }
12.
13.      public void go() {
14.        f = new Frame("GUI example");
15.        f.setLayout(new FlowLayout());
16.        b1 = new Button("Press Me");
17.        b2 = new Button("Don't Press Me");
18.        f.add(b1);
19.        f.add(b2);
20.        f.pack();
21.        f.setVisible(true);
22.      }
23.}
    main()方法
    本例中第8行main()方法有两个作用。首先,它创建了ExGui对象的一个实例。回想一下,直到一个实例存在,还没有被称做f,b1和b2的真实数据项可以使用。第二,当数据空间被创建时,main()在该实例的上下文中调用实例方法go()。在go()中,真正的运行才开始。
    new Frame (“GUI Example”)
    这个方法创建Java.awt.Frame类的一个实例。根据本地协议,在Java编程语言中,Frame是顶级窗口,带有标题条—在这种情况下,标题条由构造程序参数“GUI Example”定义—缩放柄,以及其它修饰。
    f.setLayout (new FlowLayout())
    这个方法创建Flow布局管理器的一个实例,并将它安装在框架中。对于每个Frame、Border布局来说,都有一个布局管理器,但本例中没有使用。Flow布局管理器在AWT中是最简单的,它在某种程度上象一个页面中的单词被安排成一行一行的那样来定位组件。请注意,Flow布局缺省地将每一行居中。
    new Button(“Press Me”)
    这个方法创建Java.awt.Button类的一个实例。按钮是从本地窗口工具包中取出的一个标准按钮。按钮标签是由构造程序的字符串参数定义的。
    f.add(b1)
    这个方法告诉框架f(它是一个容器),它将包容组件b1。b1的大小和位置受从这一点向前的Frame布局管理器的控制。
    f.pack()
    这个方法告诉框架来设定大小,能恰好密封它所包含的组件。为了确定框架要用多大,f.pack()询问布局管理器,在框架中哪个负责所有组件的大小和位置。
    f.setVisible(true)
    这个方法使框架以及其所有的内容变成用户看得见的东西。
    第190页代码的最终结果是:

8.9.1  Flow布局管理器
    第190页例子中所用的Flow布局对组件逐行地定位。每完成一行,一个新行便又开始。
    与其它布局管理器不一样,Flow布局管理器不限制它所管理的组件的大小,而是允许它们有自己的最佳大小。
    如果想将组件设定缺省居中的话,Flow布局构造程序参数允许将组件左对齐或右对齐。
    如果想在组件之间创建一个更大的最小间隔,可以规定一个界限。
    当用户对由Flow布局管理的区域进行缩放时,布局就发生变化。如:

TOP

SUN JAVA标准教程

呵呵 有没有后续啦??老深~~

TOP

SUN JAVA标准教程

晕~你给我发本书  出来了?

TOP

返回列表 回复 发帖