在實際應用中,我們見到的許多應用界面都屬於GUI圖形型用戶界面。如:我們點擊QQ圖標,就會彈出一個QQ登陸界面的對話框。這個QQ圖標就可以被稱作圖形化的用戶界面。
其實,用戶界面的類型分為兩類:Command line UserInterface (命令行用戶接口)
• 就是常見的Dos命令行操作。
• 需要記憶一些常用的命令,操作不直觀。
舉例:
• 比如:創建文件夾,或者刪除文件夾等
例如MS-DOS
二、圖形用戶界面(GUI,Graphical User Interface )是指以圖形化方式與用戶進行交互的程序運行界面,例如MicrosoftWindows、Word等。
優點:更友好、更豐富,且提供靈活、強大的人機交互功能,成為當前應用程序設計的主流。
在GUI程序設計中,組件(Component)是GUI的基本組成元素,凡是能夠以圖形化方式顯示在屏幕上並能與用戶交互的對象均為組件。
如下圖:均為GUI界面的組件
另外,在JDK的java.awt包中定義瞭多種GUI組件類,如Window、Menu、Button、Label、TextField、Scrollbar等。
這些抽象類,定義瞭GUI 組件的基本特性和功能
由上圖可以看出,GUI中的組件可分為:
其中,需要註意的是:
1. Container類描述瞭容器組件的所有性質;
2.它繼承於Component類,因此容器類對象本身也是一個組件,具有組件的所有性質,但反過來組件卻不一定是容器;
3.控制組件要想顯示出來必須放置在容器組件中
其中,容器類型的組件在java.awt包下可以見到。這裡,需要註意在AWT中存在兩種主要的容器類型:
1. java.awt.Window
描述的是一個沒有邊框和菜單欄、可自由停靠的頂層容器(是指不允許將其包含於其他的容器中),一般不直接使用該類,而是使用其子類Frame。
2.java.awt.Panel
最簡單而常用的容器,可作為容器包含其他組件,但不能獨立存在,必須被添加到其它容器中。
案例:
示例1:第一個GUI應用程序。
importjava.awt.*;
classTestFirstFrame{
public static void main(String args[]){
Frame frame=new Frame("第一個圖形用戶界面應用程序");//容器
Label lbl=new Label("這是我的第一個圖形用戶界面!");//控制組件
lbl.setBackground(Color.pink);
frame.setLayout(new FlowLayout());
frame.add(lbl); //將控制組件添加到容器中
frame.setSize(200,100);
frame.setVisible(true);
}
}
應註意的是:
1. Frame 默認的大小為剛好容納下標題條和最小(大)化、關閉按鈕,setSize()可設置Frame大小。
2.Frame窗口默認是不可見的,可使用setVisible(true|false)方法使之可見或隱藏。
3.組件在容器中的擺放位置由佈局管理器決定,Frame使用setLayout()方法可以設置窗口的佈局。
4.FlowLayout—流式佈局管理,特點是組件在容器中按照加入次序逐行定位,行內從左到右,一行排滿後換行。
實例2.容器組件Panel的使用。
Frame frame=new Frame("容器Panel的使用");
Panel panel=new Panel();
Button btn=new Button("確定");
panel.setBackground(Color.cyan);
panel.setSize(100,50);
panel.setLocation(40,40);
frame.setLayout(null);
frame.add(panel);
panel.add(btn);
frame.setLocation(80,100);
frame.setSize(200,100);
frame.setVisible(true);
這裡,應註意:
1. frame的默認佈局理器被取消,人工設置瞭panel的尺寸大小和在容器中的位置;
2.setSize()方法用於設置組件尺寸大小,即寬度和高度,單位為像素;
3.setLocation()方法用於設置組件在容器中的位置,即組件的左上角,即組件的左上角頂點坐標,單位也是像素。
4.各個GUI容器都擁有自己的坐標系統(計算機的顯示器屏幕也是一種GUI容器)
位置關系如圖:
通過上圖我們可以看到,佈局在GUI程序設計中的地位是十分重要的。在GUI程序設計中容器對其中所包含組件的排列方式,包括組件的位置和大小的設定,被稱為容器的佈局(Layout)。它是指系統事先定義好的若幹容器佈局效果,使用它們可以方便地實現組件在容器的佈局管理,並能夠滿足各種常規需要。例如,FlowLayout等。
註意:
每一個容器都有默認的佈局管理器,在創建一個容器對象時,同時也會創建一個相應的默認佈局管理器對象,用戶也可以隨時為容器創建和設置新的佈局管理器。
方法:
容器對象.setLayout(佈局管理器對象)
佈局管理器 容器對象.getLayout()
因此,瞭解常用佈局管理器就顯得十分重要
FlowLayout:流式佈局,是Panel(及其子類)類型容器的默認佈局管理器類型。
佈局效果:組件在容器中按照加入次序逐行定位,行內從左到右,一行排滿後換行。組件按原始大小進行顯示。
構造方法
public FlowLayout()//默認居中對齊,5個像素的水平和垂直間距
public FlowLayout(int align)//指定對齊方式
public FlowLayout(int align,int hgap,int vgap)//組件的水平和垂直間距
其中,對齊方式可以使用FlowLayout類中定義靜態常量來設定,主要包括:
FlowLayout.LEFT 左對齊
FlowLayout.RIGHT 右對齊
FlowLayout.CENTER 居中對齊
示例1:流式佈局的使用。
f.setLayout(new FlowLayout());
f.add(button1);
f.add(button2);
f.add(button3);
效果如圖:
註意:
當容器f的尺寸被重置時,其中組件的位置也隨之進行瞭調整,但組件的尺寸維持不變。
BorderLayout:邊界佈局,是Window及其子類類型容器的默認佈局管理器。
佈局效果:將整個容器范圍劃分成East、West、South、North、Center五個區域,組件隻能被添加到指定的區域。
如圖:
值得註意的是:
1. 每個區域隻能加入一個組件,如加入多個,則先前加入的組件會被遺棄 。
2. 在使用邊界佈局的容器中,組件的尺寸也被佈局管理器強行控制,即與其所在區域的尺寸相同。
構造方法
public BorderLayout()
public BorderLayout(int hgap,int vgap)
示例2:BorderLayout的使用。
f.setLayout(new BorderLayout());//該語句去掉也可,Frame默認佈局為BorderLayout
//向容器的不同方位添加組件,也可使用BorderLayout中定義的String常量來表示,例,NORTH、SOUTH、WEST、EAST等。
f.add(btnNorth,"North");
f.add(btnSouth,"South");
f.add(btnWest,"West");
f.add(btnEast,"East");
f.add(btnCenter,"Center");//如不指名組件的加入位置,則默認加入到Center區域。
註意:
1.當容器的尺寸發生變化時,其中各組件相對位置不變,尺寸隨所在區域進行縮放調整;
2.調整原則:北、南兩個區域隻能在水平方向縮放(寬度可調),東、西兩個區域隻能在垂直方向縮放(高度可調),中部區域都可縮放。
在實際學習過程中,我們需要瞭解Conpoment類的基本屬性和操作方法:
瞭解這些屬性和方法對於我們學習GUI圖形用戶界面的開發是十分有幫助的。