Java知多少(97)架構視窗基礎

來源:互聯網
上載者:User

標籤:

視窗是GUI編程的基礎,小應用程式或圖形介面的應用程式的可視組件都放在視窗中,在GUI中,視窗是使用者螢幕的一部分,起著在螢幕中一個小螢幕的作用。有以下三種視窗:

  1. Applet視窗:Applet類管理這個視窗,當應用程式程式啟動時,由系統建立和處理;
  2. 架構視窗(JFrame):這是通常意義上的視窗,它支援視窗周邊的架構、標題列,以及最小化、最大化和關閉按鈕;
  3. 一種無邊框視窗(JWindow):沒有標題列,沒有架構,只是一個空的矩形。


用Swing中的JFrame類或它的子類建立的對象就是JFrame視窗。

JFrame類的主要構造方法:

  1. JFrame():建立無標題的視窗對象;
  2. JFrame(String s):建立一個標題名是字串s的視窗對象。


JFrame類的其他常用方法:

  1. setBounds(int x,int y,int width,int height):參數x,y指定視窗出現在螢幕的位置;參數width,height指定視窗的寬度和高度。單位是像素。
  2. setSize(int width,int height):設定視窗的大小,參數width和height指定視窗的寬度和高度,單位是像素。
  3. setBackground(Color c):以參數 c設定視窗的背景顏色。
  4. setVisible(boolean b):參數b設定視窗是可見或不可見。JFrame預設是不可見的。
  5. pack():用緊湊方式顯示視窗。如果不使用該方法,視窗初始出現時可能看不到視窗中的組件,當使用者調整視窗的大小時,可能才能看到這些組件。
  6. setTitle(String name):以參數name設定視窗的名字。
  7. getTitle():擷取視窗的名字。
  8. 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)架構視窗基礎

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.