GUI:Graphical User Interface,即圖形用戶界面,用於計算機與用戶交互的一種方式
AWT:Abstract Window Toolkit,抽象窗口開發包。重量級組件。在Windows系統與Linux系統都可運行,但由於是調用操作系統實現的組件,在兩個平台運行后並不是完全相同,可移植性一般。
位於java.awt包中。
Swing:在AWT基礎上發展而來,輕量級組件,不依賴操作系統的支持,可移植性較好。
位於javax.swing包中。
java.AWT中主要的類:
Component:封裝了組件通用的方法和屬性,如圖形的組件對象、大小、顯示位置、前景色和背景色、邊界、可見性等。其對象不能獨立顯示。
注意:組件包括基本組件與容器組件,容器組件用於容納其他組件
Container:封裝了容器組件類的通用的方法和屬性
注意:容器組件不但能容納基本組件,還能容納其他容器組件
Window:頂級窗口,可獨立存在
Panel: 確定一個四邊形,可以添加其他組件(add()方法),但必須放在Window或Window的子類之中,才能顯示出來。
Frame:可以添加其他組件(add()方法),具有標題和縮放角
Dialog 是一個帶標題和邊界的頂層窗口,邊界一般用於從用戶處獲得某種形式的輸入
TextComponent:允許編輯文本的組件的超類
TextField:創建文本框對象
TextArea:顯示文本的多行區域。可以將它設置為允許編輯或只讀
Button:標簽按鈕。當按下該按鈕時,應用程序能執行某項動作
Label:顯示一行只讀文本。文本可由應用程序更改,但是用戶不能直接對其進行編輯
Frame用法:
import java.awt.Color; import java.awt.Frame; /** * java GUI中Frame常用用法 * 2014-4-14 * @author Administrator * */ public class FrameDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //創建一個初始不可見的窗口f1(參數顯示標題) Frame f1=new Frame("The first frame"); ////設置窗口大小(參數是寬度及高度,單位是像素) f1.setSize(23,45); ////設置窗口的位置(參數是坐標) f1.setLocation(15,20); //調用類的成員來顯示窗口顏色 f1.setBackground(Color.blue); //設置是否可以調整大小 f1.setResizable(true); //設置是否可見 f1.setVisible(true); //創建一個初始不可見的窗口f2 Frame f2=new Frame(); //設置窗口位置大小 f2.setBounds(70,140,50,200); f2.setBackground(Color.BLUE); //設置窗口標題 f2.setTitle("The second frame"); //設置是否可以調整大小 f2.setResizable(false); //設置是否可見 f2.setVisible(true); //獲得f2窗口標題 System.out.println(f2.getTitle()); } }
通過繼承創建Frame窗口
import java.awt.*; /** * java GUI中Frame類的繼承使用 * 2014-4-15 * @author Administrator * */ public class FrameDemo2 { private static final Color BLUE = null; private static final Color YELLOW = null; private static final Color RED = null; private static final Color GREEN = null; /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub //Color類的常量大小寫用法一致,但建議用大寫,為了符合規范 MyFrame f1=new MyFrame(100,100,200,200,Color.blue,"first"); MyFrame f2=new MyFrame(300,100,200,200,Color.green,"second"); MyFrame f3=new MyFrame(100,300,200,200,Color.orange,"third"); MyFrame f4=new MyFrame(300,300,200,200,Color.CYAN,"Fourth"); } } class MyFrame extends Frame{ MyFrame(int x,int y,int a,int b,Color c,String s){ //創建窗口的幾個主要元素:位置參數,大小,顏色,布局管理器, //s是否可以調整大小,是否可見 super("This is my"+s+"frame"); setBounds(x,y,a,b); setBackground(c); setResizable(true); //布局管理器 setLayout(null); setVisible(true); } }
創建嵌套窗口,Panel窗口嵌套在Frame中
import java.awt.Color; import java.awt.Frame; import java.awt.Panel; /** * java GUI Panel用法 * 2014-4-15 * @author Administrator * */ public class PanelDemo { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub Frame f=new Frame("Frame with Panel"); f.setBounds(300, 300, 500, 500); f.setBackground(Color.LIGHT_GRAY); f.setResizable(true); f.setLayout(null); Panel p=new Panel(null); //Panel窗口的位置參數是以Frame窗口左上角為基准 p.setBounds(50, 50,400, 400); //通過Color類三原色構造方法設置窗口顏色 p.setBackground(new Color(0,0,254)); //將Panel窗口添加到Frame中 f.add(p); f.setVisible(true); } }
繼承的寫法:
import java.awt.*; public class TestMultiPanel { public static void main(String args[]) { new MyFrame2("MyFrameWithPanel",300,300,400,300); } } class MyFrame2 extends Frame{ private Panel p1,p2,p3,p4; MyFrame2(String s,int x,int y,int w,int h){ super(s); setLayout(null); p1 = new Panel(null); p2 = new Panel(null); p3 = new Panel(null); p4 = new Panel(null); p1.setBounds(0,0,w/2,h/2); p2.setBounds(0,h/2,w/2,h/2); p3.setBounds(w/2,0,w/2,h/2); p4.setBounds(w/2,h/2,w/2,h/2); p1.setBackground(Color.BLUE); p2.setBackground(Color.GREEN); p3.setBackground(Color.YELLOW); p4.setBackground(Color.MAGENTA); add(p1);add(p2);add(p3);add(p4); setBounds(x,y,w,h); setVisible(true); } }
參考資料:尚學堂馬士兵視頻教程。