java基礎學習總結——GUI編程(一)

1、AWT介紹

  

  全部的能夠顯示出來的圖形元素都稱爲ComponentComponent表明了全部的可見的圖形元素,Component裏面有一種比較特殊的圖形元素叫ContainerContainer(容器)在圖形界面裏面是一種能夠容納其它Component元素的一種容器,Container自己也是一種Component的,Container裏面也能夠容納別的Containerjava

  Container裏面又分爲WindowPannelWindow是能夠獨立顯示出來的,平時咱們看到的各類各樣的應用程序的窗口均可以稱爲WindowWindow做爲一個應用程序窗口獨立顯示出來,Pannel也能夠容納其它的圖形元素,但通常看不見PannelPannel不能做爲應用程序的獨立窗口顯示出來,Pannel要想顯示出來就必須得把本身裝入到Window裏面才能顯示出來。編程

  Pannel應用比較典型的就是Applet(JAVA的頁面小應用程序),如今基本上已經不用了,AJAXJAVASCRIPT徹底取代了它的應用。佈局

  Window自己又能夠分爲FrameDialogFrame就是咱們平時看到的通常的窗口,而Dialog則是那些須要用戶進行了某些操做(如點擊某個下拉菜單的項)纔出現的對話框,這種對話框就是Dialog學習

2、組件和容器(ComponentContainer)

  

2.1.Frame

  

Frame範例:測試

 1 package cn.javastudy.summary;
 2 
 3 /**學習JAVA的GUI編程編寫的第一個圖形界面窗口*/
 4 import java.awt.*;
 5 
 6 public class TestFrame {
 7     public static void main(String args[]) {
 8         Frame f = new Frame("個人第一個JAVA圖形界面窗口");
 9         /*
10          * 這裏只是在內存裏面建立了一個窗口對象 還不能真正顯示出來然咱們看到
11          */
12         f.setBackground(Color.blue);// 設置窗體的背景顏色
13         // blue是Color類裏面的一個靜態常量,可使用「類名.靜態常量名」來訪問
14         f.setVisible(true);// 設置窗體是否可見
15         /*
16          * 要想看到在內存裏面建立出來的窗口對象, 必須調用setVisble()方法,而且把參數true傳入才能看得見窗體 若是傳入的參數是false,那麼窗體也是看不見的
17          */
18         f.setSize(400, 400);// 設置窗體的初始大小
19         f.setLocation(200, 200);// 設置窗體出現時的位置,若是不設置則默認在左上角(0,0)位置顯示
20         f.setResizable(false);
21         /*
22          * 設置窗體可否被改變大小,設置爲false後表示不能改變窗體的顯示大小 這裏將窗體顯示的大小設置爲200X200,那麼窗體的顯示只能是這個大小了,不能再使用鼠標拖大或者縮小
23          */
24     }
25 }

運行結果以下:spa

  

 1 package cn.javastudy.summary;
 2 
 3 import java.awt.*;
 4 public class TestMultiFrame{
 5     public static void main(String args[]){
 6         MyFrame f1 = new MyFrame(100,100,200,200,Color.BLUE);
 7         MyFrame f2 = new MyFrame(300,100,200,200,Color.YELLOW);
 8         MyFrame f3 = new MyFrame(100,300,200,200,Color.GREEN);
 9         MyFrame f4 = new MyFrame(300,300,200,200,Color.MAGENTA);
10     }
11 }
12 /*自定義一個類MyFrame,而且從Frame類繼承
13 這樣MyFrame類就擁有了Frame類的一切屬性和方法
14 而且MyFrame類還能夠自定義屬性和方法
15 所以使用從Frame類繼承而來的自定義類來建立圖形窗口比直接使用Frame類來建立圖形窗口要靈活
16 因此通常使用從Frame類繼承而來的自定義類建立圖形窗口界面比較好,
17 不推薦直接使用Frame類來建立圖形窗口界面
18 */
19 class MyFrame extends Frame{
20     static int id = 0;
21     //定義一個靜態成員變量id,用來記錄建立出來的窗口的數目
22     MyFrame(int x,int y,int w,int h,Color color){
23         //自定義構成方法,在構造方法體內使用super調用父類Frame的構造方法
24         super("MyFrame"+(++id));
25         setBackground(color);
26         /*使用從父類Frame繼承而來的方法設置窗體的相關屬性*/
27         setLayout(null);
28         setBounds(x,y,w,h);
29         setVisible(true);
30     }
31 }

運行結果:code

  

2.2.Panel

  

Panel範例:對象

 1 package cn.javastudy.summary;
 2 
 3 import java.awt.*;
 4 public class TestPanel{
 5     public static void main(String args[]){
 6         Frame f = new Frame("JAVA Fram With Panel");
 7         Panel p = new Panel(null);
 8         f.setLayout(null);
 9         f.setBounds(300,300,500,500);//這裏設置的座標(300,300)是相對於整個屏幕的
10         f.setBackground(new Color(0,0,102));//設置背景顏色時使用三基色(紅,綠,藍)的比例來調配背景色
11         p.setBounds(50,50,400,400);//這裏設置的座標(50,50)是相對於Frame窗體的
12         p.setBackground(new Color(204,204,255));
13         f.add(p);//把Panel容器裝入到Frame容器中,使其能在Frame窗口中顯示出來
14         f.setVisible(true);
15     }
16 }

運行結果以下:blog

  

3、佈局管理器

  

3.1.第一種佈局管理器——FlowLayout

  

  

測試代碼:繼承

 1 package cn.javastudy.summary;
 2 
 3 import java.awt.*;
 4 
 5 public class TestFlowLayout {
 6     public static void main(String args[]) {
 7         Frame f = new Frame("FlowLayout");
 8         /*
 9          * 使用Button類建立按鈕 按鈕類的其中一個構造方法:Button(String label) label爲按鈕顯示的文本
10          */
11         Button btn1 = new Button("button1");
12         Button btn2 = new Button("button2");
13         Button btn3 = new Button("button3");
14         /* setLayout方法的定義:public void setLayout(LayoutManager mgr) */
15         f.setLayout(new FlowLayout());// 使用流水(Flow)線般的佈局
16         /* 使用了佈局管理器FlowLayout,這裏的佈局採用默認的水平居中模式 */
17         // f.setLayout(new FlowLayout(FlowLayout.LEFT));
18         /* 這裏在佈局的時候使用了FlowLayout.LEFT常量,這樣就將按鈕設置爲左對齊 */
19         // f.setLayout(new FlowLayout(FlowLayout.RIGHT));
20         /* 這裏在佈局的時候使用了FlowLayout.RIGHT常量,這樣就將按鈕設置爲右對齊 */
21         f.add(btn1);// 把建立出來的按鈕放置到Frame窗體中
22         f.add(btn2); // 這裏並無設置按鈕的大小與位置
23         f.add(btn3); // 設置按鈕的大小與位置都是由佈局管理器來作的
24         f.setVisible(true);
25         f.setSize(200, 200);
26     }
27 }

運行結果以下:

3.2.第二種佈局管理器——BorderLayout

  

   

測試代碼:

 1 package cn.javastudy.summary;
 2 
 3 import java.awt.*;
 4 
 5 public class TestBorderLayout {
 6     public static void main(String args[]) {
 7         Frame f = new Frame("BorderLayout");
 8         Button btnEast = new Button("East");
 9         Button btnWest = new Button("West");
10         Button btnSouth = new Button("South");
11         Button btnNorth = new Button("North");
12         Button btnCenter = new Button("Center");
13         /*
14          * 把按鈕放置到Frame窗體時按照東西南北中五個方向排列好 推薦使用這種方式去排列窗體元素,
15          * 這樣容易檢查出錯誤 由於這樣寫若是寫錯了編譯器會提示出錯
16          */
17         f.add(btnEast, BorderLayout.EAST);
18         f.add(btnWest, BorderLayout.WEST);
19         f.add(btnSouth, BorderLayout.SOUTH);
20         f.add(btnNorth, BorderLayout.NORTH);
21         f.add(btnCenter, BorderLayout.CENTER);
22         /*
23          * 也可使用這樣的方式排列按鈕 在把按鈕放置到Frame窗體時使用方向定位的字符串指定按鈕的放置位置 
24          * 這種使用方向定位的字符串指定按鈕的放置方式不推薦使用 一旦寫錯了方向字符串就很差檢查出來
25          *  由於即便是寫錯了仍然能夠編譯經過
26          */
27         /*
28          * f.add(btnEast,"East"); 
29          * f.add(btnWest,"West"); 
30          * f.add(btnSouth,"South"); 
31          * f.add(btnNorth,"North"); 
32          * f.add(btnCenter,"Center");
33          */
34         f.setSize(200, 200);
35         f.setVisible(true);
36     }
37 }

運行結果:

3.3.第三種佈局管理器——GridLayout(表格佈局管理器)

  

測試代碼:

 1 package cn.javastudy.summary;
 2 
 3 import java.awt.*;
 4 
 5 public class TestGridLayout {
 6     public static void main(String args[]) {
 7         Frame f = new Frame("GridLayout");
 8         Button btn1 = new Button("btn1");
 9         Button btn2 = new Button("btn2");
10         Button btn3 = new Button("btn3");
11         Button btn4 = new Button("btn4");
12         Button btn5 = new Button("btn5");
13         Button btn6 = new Button("bnt6");
14         f.setLayout(new GridLayout(3, 2));
15         /* 把佈局劃分紅3行2列的表格佈局形式 */
16         f.add(btn1);
17         f.add(btn2);
18         f.add(btn3);
19         f.add(btn4);
20         f.add(btn5);
21         f.add(btn6);
22         f.pack();
23         f.setVisible(true);
24     }
25 }

運行結果:

3.4.佈局練習

這幾種佈局管理器能夠設置在Frame裏面,也能夠設置在Panel裏面,而Panel自己也能夠加入到Frame裏面,所以經過FramePanel的嵌套就能夠實現比較複雜的佈局

實現代碼:

 1 package cn.javastudy.summary;
 2 
 3 import java.awt.*;
 4 public class TestTenButtons{
 5     public static void main(String args[]){
 6         /*這裏主要是對顯示窗體進行設置*/
 7         Frame f = new Frame("佈局管理器的嵌套使用");
 8         f.setLayout(new GridLayout(2,1));//把整個窗體分紅2行1列的表格佈局
 9         f.setLocation(300,400);
10         f.setSize(400,300);
11         f.setVisible(true);
12         f.setBackground(new Color(204,204,255));
13         /*這裏主要是對Panel進行佈局的設置*/
14         Panel p1 = new Panel(new BorderLayout());
15         Panel p2 = new Panel(new GridLayout(2,1));//p2使用2行1列的表格佈局
16         Panel p3 = new Panel(new BorderLayout());
17         Panel p4 = new Panel(new GridLayout(2,2));//p4使用2行2列的表格佈局
18         /*這裏主要是把按鈕元素加入到Panel裏面*/
19         p1.add(new Button("East(p1-東)"),BorderLayout.EAST);
20         p1.add(new Button("West(p1-西)"),BorderLayout.WEST);
21         p2.add(new Button("p2-Button1"));
22         p2.add(new Button("p2-Button2"));
23         /*p1裏面嵌套p2,把p2裏面的按鈕做爲p的中間部分裝入到p1裏面*/
24         p1.add(p2,BorderLayout.CENTER);//把p2做爲元素加入到p1裏面
25         
26         p3.add(new Button("East(p3-東)"),BorderLayout.EAST);
27         p3.add(new Button("West(p3-西)"),BorderLayout.WEST);
28         for(int i=0;i<4;i++){
29                 p4.add(new Button("p4-Button"+i));
30             }
31         /*p3裏面嵌套p4,把p4裏面的按鈕做爲p的中間部分裝入到p3裏面*/
32         p3.add(p4,BorderLayout.CENTER);
33         
34         f.add(p1);//把Panel裝入Frame裏面,以便於在Frame窗體中顯示出來
35         f.add(p3);
36         
37     } 
38 }

運行結果:

4、佈局管理器總結

  

相關文章
相關標籤/搜索