標籤:
視窗是GUI編程的基礎,小應用程式或圖形介面的應用程式的可視組件都放在視窗中,在GUI中,視窗是使用者螢幕的一部分,起著在螢幕中一個小螢幕的作用。有以下三種視窗:
- Applet視窗:Applet類管理這個視窗,當應用程式程式啟動時,由系統建立和處理;
- 架構視窗(JFrame):這是通常意義上的視窗,它支援視窗周邊的架構、標題列,以及最小化、最大化和關閉按鈕;
- 一種無邊框視窗(JWindow):沒有標題列,沒有架構,只是一個空的矩形。
用Swing中的JFrame類或它的子類建立的對象就是JFrame視窗。
JFrame類的主要構造方法:
- JFrame():建立無標題的視窗對象;
- JFrame(String s):建立一個標題名是字串s的視窗對象。
JFrame類的其他常用方法:
- setBounds(int x,int y,int width,int height):參數x,y指定視窗出現在螢幕的位置;參數width,height指定視窗的寬度和高度。單位是像素。
- setSize(int width,int height):設定視窗的大小,參數width和height指定視窗的寬度和高度,單位是像素。
- setBackground(Color c):以參數 c設定視窗的背景顏色。
- setVisible(boolean b):參數b設定視窗是可見或不可見。JFrame預設是不可見的。
- pack():用緊湊方式顯示視窗。如果不使用該方法,視窗初始出現時可能看不到視窗中的組件,當使用者調整視窗的大小時,可能才能看到這些組件。
- setTitle(String name):以參數name設定視窗的名字。
- getTitle():擷取視窗的名字。
- setResiable(boolean m):設定當前視窗是否可調整大小(預設可調整大小)。
Swing裡的容器都可以添加組件,除了JPanel及其子類(JApplet)之外,其他的Swing容器不允許把組件直接加入。其他容器添加組件有兩種方法:
- 一種是用getContentPane()方法獲得內容面板,再將組件加入。例如,例5.1程式中的代碼:
mw.getContentPane().add(button);
該代碼的意義是獲得容器的內容面板,並將按鈕button添加到這個內容面板中。
- 另一種是建立一個JPanel對象的中間容器,把組件添加到這個容器中,再用setContentPane()把這個容器置為內容面板。例如,代碼:
JPanel contentPane = new JPanel();
…
mw.setContentPane(contentPane);
以上代碼把contentPane置成內容面板。
【例 11-1】一個用JFrame類建立視窗的Java應用程式。視窗只有一個按鈕。
1 import javax.swing.*; 2 public class Example5_1{ 3 public static void main(String args[]){ 4 JFrame mw = new JFrame(“我的第一個視窗”); 5 mw.setSize(250,200); 6 JButton button = new JButton(“我是一個按鈕”); 7 mw.getContentPane().add(button); 8 mw.setVisible(true); 9 }10 }
用Swing 編寫GUI程式時,通常不直接用JFrame建立視窗對象,而用JFrame派生的子類建立視窗對象,在子類中可以加入視窗的特定要求和特別的內容等。
【例 11-2】定義JFrame派生的子類MyWindowDemo建立JFrame視窗。類MyWindowDemo的構造方法有五個參數:視窗的標題名,加放視窗的組件,視窗的背景顏色以及視窗的高度和寬度。在主方法中,利用類
1 MyWindowDemo建立兩個類似的視窗。 2 import javax.swing.*; 3 import java.awt.*; 4 import java.awt.event.*; 5 public class Example5_2{ 6 public static MyWindowDemo mw1; 7 public static MyWindowDemo mw2; 8 public static void main(String args[]){ 9 JButton static butt1 = new JButton(“我是一個按鈕”);10 String name1 = “我的第一個視窗”;11 String name2 = “我的第二個視窗”;12 mw1 = new MyWindowDemo(name1,butt1,Color.blue,350,450);13 mw1.setVisible(true);14 JButton butt2 = new JButton(“我是另一個按鈕”);15 mw2 = new MyWindowDemo(name2,butt2,Color.magenta,300,400);16 mw2.setVisible(true);17 }18 }19 class MyWindowDemo extends JFrame{20 public MyWindowDemo(String name,JButton button,Color c,int w,int h){21 super();22 setTitle(name);23 setSize(w,h);24 Container con = getContentPane();25 con.add(button);26 con.setBackground(c);27 }28 }
顯示顏色由java.awt包的Color類管理,在Color類中預定了一些常用的顏色,參見表11-3。JFrame類的部分常用方法參見表11-4。
表11-3 Color 類中定義的常用顏色
| 欄位摘要 |
顏色 |
| static Color black/BLACK |
黑色 |
| static Color blue/BLUE |
藍色 |
| static Color cyan/CYAN |
青色 |
| static Color darkGray/DARK_GRAY |
深灰色 |
| static Color gray/GRAY |
灰色 |
| static Color green/GREEN |
綠色 |
| static Color lightGray/LIGHTGRAY |
淺灰色 |
| static Color magenta/MAGENTA |
洋紅色 |
| static Color orange/ORANGE |
桔黃色 |
| static Color pink/PINK |
粉紅色 |
| static Color red/RED |
紅色 |
| static Color white/WHITE |
白色 |
| static Color yellow/YELLOW |
黃色 |
表 11-4 JFrame 類的部分常用方法
| 方法 |
意義 |
| JFrame() |
構造方法,建立一個 JFrame 對象 |
| JFrame(String title) |
建立一個以 title 為標題的 JFrame 對象 |
| add() |
從父類繼承的方法,向視窗添加視窗元素 |
| void addWindowListener(WindowListener ear) |
註冊監視器,監聽由 JFrame 對象擊發的事件 |
| Container getContentPane() |
返回 JFrame 對象的內容面板 |
| void setBackground(Color c) |
設定背景色為 c |
| void setForeground(Color c) |
設定前景色彩為 c |
| void setSize(int w,int h) |
設定視窗的寬為 w,高為 h |
| vid setTitle(String title) |
設定視窗中的標題 |
| void setVisible(boolean b) |
設定視窗的可見度,true 可見,false 不可見
|
系列文章:
Java知多少(上)Java知多少(中)Java知多少(78)Java向量(Vector)及其應用Java知多少(79)雜湊表及其應用Java知多少(80)圖形介面設計基礎Java知多少(81)架構視窗基礎Java知多少(82)標籤、按鈕和按鈕事件簡介Java知多少(83)面板基礎:JPanel和JScrollPaneJava知多少(84)圖形介面之布局設計Java知多少(85)文字框和文本區Java知多少(86)文字框和文本區的輸入輸出Java知多少(87)選擇框和選項按鈕Java知多少(88)列表和組合框Java知多少(89)列表和組合框Java知多少(90)菜單Java知多少(91)對話方塊Java知多少(92)捲軸Java知多少(93)滑鼠事件Java知多少(94)鍵盤事件Java知多少(95)繪圖基礎Java知多少(96)繪圖之設定字型和顏色
Java知多少(97)架構視窗基礎