1. 程式人生 > >JAVA 圖形界面開發基礎詳解

JAVA 圖形界面開發基礎詳解

.so 積木 並且 init 中間 ram stat 字符 tle

/*文章中用到的代碼只是一部分,需要源碼的可通過郵箱聯系我 [email protected]*/

與C的win32一樣,JAVA也有自己的圖形界面開發,將在此篇博客中對基礎部分進行講解。

1.Java提供的圖形界面類有哪些?

  Java提供了兩套圖形界面

  (1)AWT組建(基礎)

      AWT組件是jdk1.0的時候推出的圖形界面類,它是位於java.awt包下的類。
      當時在開發AWT組件時,采用的語言是C和C++,並且還調用了操作系統底層的繪圖函數來實現AWT組件(我們看到的圖形界面實際上畫出來的)。
      基於語言和底層函數的調用,就導致AWT組件無法實現跨平臺性。

  (2)SWING組件(擴展)

      SWING組件是jdk1.4的時候推出的圖形界面類,它是位於javax.swing包下的類。

      SWING組件是基於AWT組件的基礎上,采用純Java語言構建一個條新的輕量級跨平臺組件。

   AIR富客戶端

      JavaFX

2.常用的組件類和輔助類

  (1)容器組件類:組件上能添加其他的組件,那該組件就是容器組件類。
    JFrame 窗體容器組件類 頂級容器(頂級容器不要相互添加),如果要實現一個圖形界面,首先必須要先有一個頂級容器
    JPanel 面板容器組件類 最靈活的容器

  (2)元素組件類:一般是用來顯示文字、圖片或者接收輸入信息的就是元素組件類。
    JLabel 標簽元素組件類 顯示文字或圖片,也可以文字圖片一起顯示
    JTextField 文本輸入框元素組件類 接收用戶輸入的信息,然後將輸入信息直接顯示
    JPasswordField 密碼輸入框元素組件類 接收用戶輸入的信息,然後將輸入的每一個字符都用對應的一個符號代替顯示
    JButton 按鈕元素組件類 顯示文字或圖片,也可以文字圖片一起顯示,可以點擊
    JComboBox 下拉列邊框元素組件類 可以給組件添加多個選項,每次只能選中一個,默認不可以編輯。
    JCheckBox 復選框元素組件類 提供一個選擇框,在框後還可以顯示文字或圖片信息。


    註意:上述的容器組件類和元素組件類都是屬於SWING組件中的類,如果要使用這些類,要記得加上類的包名,例如:javax.swing.JFrame。


  (3)輔助類:幫助組件完成某一個特定功能的類。
     java.awt.FlowLayout 流式布局類,流式布局的效果類似於Word文檔,但是不能像Word一樣回車換行。
    java.awt.BorderLayout 邊框布局類,把容器分為五部分,上北下南左西右東中間,每一個部分只能添加一個組件。

      在java.awt包和javax.swing包下所有以Layout結尾的類都是布局類。布局類只能應用在容器組件上。
    java.awt.Dimension 封裝組件寬度和高度的類
    javax.swing.ImageIcon 加載圖片到程序中的類

3.界面實現(搭積木的過程)
  (1)定義Login類,在類中定義主函數和初始化界面的方法。
  (2)在主函數中實例化Login類的對象,然後用對象名調用初始化界面的方法。
  (3)在initUI方法中,實例化JFrame窗體容器組件類的對象。
  (4)設置窗體容器組件的屬性值:標題、大小、顯示位置、關閉操作、禁止調整組件大小、布局、可見。
  (5)實例化元素組件類的對象,添加到窗體上(組件的添加要在窗體可見之前完成)。

 1 package xxj.login;
 2 
 3 import java.awt.BorderLayout;
 4 import java.awt.Dimension;
 5 import java.awt.FlowLayout;
 6 
 7 import javax.swing.ImageIcon;
 8 import javax.swing.JButton;
 9 import javax.swing.JComboBox;
10 import javax.swing.JFrame;
11 import javax.swing.JLabel;
12 import javax.swing.JPanel;
13 import javax.swing.JTextField;
14 
15 /**
16  * 1.定義Login類,
17  */
18 public class Login {
19 
20     /**
21      * 1.在類中定義主函數和
22      */
23     public static void main(String[] args) {
24         // 2.在主函數中實例化Login類的對象,然後用對象名調用初始化界面的方法。
25         Login login = new Login();
26         login.initUI();
27     }
28 
29     /**
30      * 1.初始化界面的方法。
31      */
32     public void initUI() {
33         // 3.在initUI方法中,實例化JFrame窗體容器組件類的對象。
34         JFrame frame = new JFrame();
35         // 4.設置窗體容器組件的屬性值:標題、大小、顯示位置、關閉操作、禁止調整組件大小、布局、可見。
36         frame.setTitle("Login");// 設置窗體的標題屬性值
37         frame.setSize(380, 320);// 設置窗體的大小屬性值,單位是像素
38         frame.setLocationRelativeTo(null);// 設置窗體顯示在屏幕的中央
39         frame.setDefaultCloseOperation(3);// 設置窗體的關閉操作,3表示關閉窗體退出程序。
40         frame.setResizable(false);// 設置禁止調整窗體的大小
41 
42         /**
43          * // 實例化FlowLayout流式布局類的對象 FlowLayout fl = new
44          * FlowLayout(FlowLayout.CENTER, 5, 5); frame.setLayout(fl);//
45          * 設置窗體的布局方式為流式布局
46          */
47 
48         BorderLayout bl = new BorderLayout();// 實例化BorderLayout邊框 布局類的對象
49         frame.setLayout(bl);// JFrame窗體容器組件默認的布局方式就是BorderLayout邊框布局
50 
51         // 5.實例化元素組件類的對象,添加到窗體上(組件的添加要在窗體可見之前完成)。
52 
53         // 實例化ImageIcon圖標類的對象,該對象加載磁盤上的圖片到內存中,組件就可以顯示ImageIcon的對象
54         ImageIcon icon = new ImageIcon("這裏放圖片地址");
55         // 實例化JLabel標簽元素組件類的對象,組件顯示icon圖標對象
56         JLabel labIcon = new JLabel(icon);
57         // 將labIcon添加到窗體的北邊
58         frame.add(labIcon, BorderLayout.NORTH);
59 
60         // 實例化JLabel標簽元素組件類的對象,組件顯示"賬號:"文字
61         JLabel labName = new JLabel("賬號:");
62         // 將labName添加到窗體上
63         frame.add(labName, BorderLayout.WEST);// 在邊框布局中,將組件添加到窗體的西邊
64 
65 //        // 實例化JLabel標簽元素組件類的對象,組件顯示"密碼:"文字
66 //        JLabel labPassword = new JLabel("密碼:");
67 //        // 將labPassword添加到窗體上
68 //        frame.add(labPassword, BorderLayout.SOUTH);// 在邊框布局中,將組件添加到窗體的南邊
69 
70 //        // 實例化JButton標簽元素組件類的對象,組件顯示"東邊:"文字
71 //        JButton labeast = new JButton("東邊:");
72 //        // 將labeast添加到窗體上
73 //        frame.add(labeast, BorderLayout.EAST);// 在邊框布局中,將組件添加到窗體的東邊
74 
75         //實例化JPanel面板容器組件類的對象
76         JPanel centerPane = new JPanel();
77         centerPane.setLayout(new FlowLayout());
78         
79         
80         JTextField textName = new JTextField();
81         textName.setPreferredSize(new Dimension(180,30));//此方法不能用於JFrame。
82         centerPane.add(textName);
83         
84         String [] array = {"257037851"};
85         JComboBox  cbItem = new JComboBox(array);
86         cbItem.setPreferredSize(new Dimension(180,30));
87         centerPane.add(cbItem);
88         
89         frame.add(centerPane);
90 
91         frame.setVisible(true);// 設置窗體為可見,這個是必須寫的,且必須在最後,否則會看不到一些組件
92     }
93 
94 }

JAVA 圖形界面開發基礎詳解