在實際應用中,咱們見到的許多應用界面都屬於GUI圖形型用戶界面。如:咱們點擊QQ圖標,就會彈出一個QQ登錄界面的對話框。這個QQ圖標就能夠被稱做圖形化的用戶界面。java
其實,用戶界面的類型分爲兩類:Command line UserInterface (命令行用戶接口)佈局
• 就是常見的Dos命令行操做。學習
• 須要記憶一些經常使用的命令,操做不直觀。命令行
舉例:設計
• 好比:建立文件夾,或者刪除文件夾等對象
例如MS-DOSblog
2、圖形用戶界面(GUI,Graphical User Interface )是指以圖形化方式與用戶進行交互的程序運行界面,例如MicrosoftWindows、Word等。繼承
優勢:更友好、更豐富,且提供靈活、強大的人機交互功能,成爲當前應用程序設計的主流。接口
在GUI程序設計中,組件(Component)是GUI的基本組成元素,凡是可以以圖形化方式顯示在屏幕上並能與用戶交互的對象均爲組件。get
另外,在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類的基本屬性和操做方法: