1 用AWT生成圖形化用戶界面
抽象窗口工具包AWT (Abstract Window Toolkit) 是 API為Java 程序提供的建立圖形用戶界面GUI (Graphics User Interface)工具集,AWT可用于Java的applet和applications中。它支持圖形用戶界面編程的功能包括: 用戶界面組件;事件處理模型;圖形和圖像工具,包括形狀、顏色和字體類;布局管理器,可以進(jìn)行靈活的窗口布局而與特定窗口的尺寸和屏幕分辨率無(wú)關(guān);數(shù)據(jù)傳送類,可以通過(guò)本地平臺(tái)的剪貼板來(lái)進(jìn)行剪切和粘貼。
1.1 java.awt包
java.awt包中提供了GUI設(shè)計(jì)所使用的類和接口,可從下圖中看到主要類之間的關(guān)系。

java.awt包提供了基本的java程序的GUI設(shè)計(jì)工具。主要包括下述三個(gè)概念:
組件--Component
容器--Container
布局管理器--LayoutManager
1.2 組件和容器
Java的圖形用戶界面的最基本組成部分是組件(Component),組件是一個(gè)可以以圖形化的方式顯示在屏幕上并能與用戶進(jìn)行交互的對(duì)象,例如一個(gè)按鈕,一個(gè)標(biāo)簽等。組件不能獨(dú)立地顯示出來(lái),必須將組件放在一定的容器中才可以顯示出來(lái)。
類java.awt.Component是許多組件類的父類,Component類中封裝了組件通用的方法和屬性,如圖形的組件對(duì)象、大小、顯示位置、前景色和背景色、邊界、可見(jiàn)性等,因此許多組件類也就繼承了Component類的成員方法和成員變量,相應(yīng)的成員方法包括:
getComponentAt(int x, int y)
getFont()
getForeground()
getName()
getSize()
paint(Graphics g)
repaint()
update()
setVisible(boolean b)
setSize(Dimension d)
setName(String name)等
容器(Container)也是一個(gè)類,實(shí)際上是Component的子類,因此容器本身也是一個(gè)組件,具有組件的所有性質(zhì),但是它的主要功能是容納其它組件和容器。
布局管理器(LayoutManager):每個(gè)容器都有一個(gè)布局管理器,當(dāng)容器需要對(duì)某個(gè)組件進(jìn)行定位或判斷其大小尺寸時(shí),就會(huì)調(diào)用其對(duì)應(yīng)的布局管理器。
為了使我們生成的圖形用戶界面具有良好的平臺(tái)無(wú)關(guān)性,Java語(yǔ)言中,提供了布局管理器這個(gè)工具來(lái)管理組件在容器中的布局,而不使用直接設(shè)置組件位置和大小的方式。
在程序中安排組件的位置和大小時(shí),應(yīng)該注意以下兩點(diǎn):
1.容器中的布局管理器負(fù)責(zé)各個(gè)組件的大小和位置,因此用戶無(wú)法在這種情況下設(shè)置組件的這些屬性。如果試圖使用Java 語(yǔ)言提供的setLocation(),setSize(),setBounds() 等方法,則都會(huì)被布局管理器覆蓋。
2.如果用戶確實(shí)需要親自設(shè)置組件大小或位置,則應(yīng)取消該容器的布局管理器,方法為:
setLayout(null);
1.3 常用容器
容器java.awt.Container是Component的子類,一個(gè)容器可以容納多個(gè)組件,并使它們成為一個(gè)整體。容器可以簡(jiǎn)化圖形化界面的設(shè)計(jì),以整體結(jié)構(gòu)來(lái)布置界面。所有的容器都可以通過(guò)add()方法向容器中添加組件。
有三種類型的容器:Window、Panel、ScrollPane,常用的有Panel, Frame, Applet。
1.Frame

以下是容器的例子:
例1
1 import java.awt.*;
2 public class MyFrame extends Frame{
3 public static void main(String args[ ]){
4 MyFrame fr = new MyFrame("Hello Out There!");//構(gòu)造方法
5 fr.setSize(200,200);//設(shè)置Frame的大小,缺省為(0,0)
6 fr.setBackground(Color.red);//設(shè)置Frame的背景,缺省為紅色
7 fr.setVisible(true);//設(shè)置Frame為可見(jiàn),缺省為不可見(jiàn)
8 }
9 public MyFrame (String str){
10 super(str);//調(diào)用父類的構(gòu)造方法
11 }
12 }
運(yùn)行結(jié)果如下:
2. Panel

例2
1 import java.awt.*;
2 public class FrameWithPanel extends Frame{
3 public FrameWithPanel(String str){
4 super(str);
5 }
6 public static void main(String args[]){
7 FrameWithPanel fr = new FrameWithPanel("Frame with Panel");
8 Panel pan=new Panel();
9 fr.setSize(200,200);
10 fr.setBackground(Color.red);//框架fr的背景顏色設(shè)置為紅色
11 fr.setLayout(null);//取消布局管理器
12 pan.setSize(100,100);
13 pan.setBackground(Color.yellow);//設(shè)置面板pan的背景顏色為黃色
14 fr.add(pan);//用add方法把面板pan添加到框架fr中
15 fr.setVisible(true);
16 }
17 }
運(yùn)行結(jié)果如下:
posted on 2006-01-21 18:10
★yesjoy★ 閱讀(1200)
評(píng)論(0) 編輯 收藏 所屬分類:
java.awt包