JAVA 圖形界面開發基礎詳解
/*文章中用到的代碼只是一部分,需要源碼的可通過郵箱聯系我 [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 圖形界面開發基礎詳解