圖形用戶界面(Graphics User Interface,GUI)
個人認爲,所謂圖形界面開發,不過是像小孩子玩積木一樣,把一個個組件添加上去,組成一個作品。
首先,我們來了解一下這些組件,也就是搭積木的原材料。
Java提供的圖形界面類有兩大類:
1.AWT組件(基礎)
AWT組件是jdk1.0的時候推出的圖形界面類,這套組件是存儲在java.awt包下的類。
(採用了C和C++的語言實現的,並且在實現的時候還調用了操作系統底層的繪圖函數實現的組件,無法實現跨平臺)
2.SWING組件(擴展)
SWING組件是jdk1.4的時候推出的圖形界面類,這套組件是存儲在javax.swing包下的類。
SWING是基於AWT組件的基礎上,採用純Java語言構建的一套新的跨平臺組件。
不管使用的是AWT組件還是SWING組件開發的應用程序是可以跨平臺的。
常用的組件類和輔助類
1.容器組件類:組件上能添加其他的組件,那該組件就是容器組件類。
JFrame 窗體容器組件類,頂級容器:要實現一個圖形界面,首先必須要先有一個頂級容器做爲載體。
JFrame類的常用方法
JFrame frame = new JFrame();
frame.setTitle("圖形界面");// 設置窗體的標題
frame.setSize(300, 350);// 設置窗體的大小
frame.setLocation(0, 0);//設置窗體顯示的位置
frame.setLocationRelativeTo(null);// 設置窗體相對於另一個組件的中央位置,如果參數爲null,則在屏幕的中央,且一定要在設置大小後
frame.setDefaultCloseOperation(3);// 設置窗體的關閉操作;3表示關閉窗體退出程序;2表示如果只有一個窗體則關閉窗體退出程序,如果多個窗體則關閉當前窗體,其他的不退出;1表示關閉窗體但是程序不結束;0表示點擊關閉按鈕無效。
frame.setLayout(fl);//設置窗體的佈局方式爲fl流式佈局
frame.add();//添加組件
frame.setResizable(false);// 禁止調整窗體的大小
frame.setVisible(true);// 設置窗體爲可見
2.元素組件類:用來顯示文字、圖片或接收用戶輸入信息的就是元素組件類。
JLabel 標籤元素組件類 顯示文字或圖片,也可以文字圖片一起顯示。
JLabel labelName = new JLabel("標籤");
JTextField 文本輸入框元素組件類 接收用戶輸入的信息,然後將輸入的信息直接顯示出來。
JPasswordField 密碼輸入框元素組件類 接收用戶輸入的信息,然後將輸入的每一個字符用對應的一個符號代替顯示。
JButton 按鈕元素組件類 顯示文字或圖片,也可以文字圖片一起顯示,有按下和釋放的效果。
使用方法: frame.add(元素組件對象);//(要在窗體可見之前完成)。
設置大小:setSize()方法只有頂級容器組件有效;
setPreferredSize()方法,除頂級容器組件外,其他組件設置大小的方法。
3.輔助類:幫助組件完成某一個特定功能的類。
javax.swing.ImageIcon 圖標類 加載磁盤上的圖片文件到內存中。
// 實例化ImageIcon對象,加載磁盤上的圖片到內存中
ImageIcon icon = new ImageIcon("C:\\Users\\any\\Desktop\\53.png");
java.awt.FlowLayout 流式佈局類 流式佈局的佈局效果類似於Word文檔,但是不能像Word一樣回車換行,只能是自動換行。
佈局類是針對容器組件設置的;在java.awt和javax.swing包下,所有以Layout結尾的都是佈局類。
java.awt.Dimension 封裝組件寬度和高度的類
上述的組件類是屬於SWING組件中的類,如果要使用記得加上它們的包名,
例如:javax.swing.JFrame,
也可以使用import javax.swing.JFrame引入類,然後直接使用類名。
如果想要使用AWT組件,只需要將類名的第一字母J去掉就可以,例如:java.awt.Frame。
登錄界面示例:
package login;
import javax.swing.JFrame;
import javax.swing.ImageIcon;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;
import java.awt.FlowLayout;
import java.awt.Dimension;
public class Login {
public static void main(String[] args) {
Login mylogin=new Login();
mylogin.InitUI();
}
public void InitUI(){
//組件類
JFrame frame=new JFrame();
frame.setTitle("Login");
frame.setSize(300,330);
frame.setLocationRelativeTo(null);
frame.setDefaultCloseOperation(3);
FlowLayout fl=new FlowLayout(FlowLayout.CENTER);
frame.setLayout(fl);
ImageIcon icon=new ImageIcon("C:\\Users\\lenovo\\Desktop\\179b2b02a0efd6cd.jpg");
JLabel lb=new JLabel(icon);
lb.setPreferredSize(new Dimension(300,150));
frame.add(lb);
JLabel labelName=new JLabel("賬號:");
frame.add(labelName);
JTextField textName = new JTextField();
//文本框大小
textName.setPreferredSize(new Dimension(210,30));
frame.add(textName);
JLabel labelName2=new JLabel("密碼:");
frame.add(labelName2);
JPasswordField textName2 = new JPasswordField();
//文本框大小
textName2.setPreferredSize(new Dimension(210,30));
frame.add(textName2);
JButton bt =new JButton("登錄");
bt.setPreferredSize(new Dimension(70,50));
frame.add(bt);
frame.setVisible(true);
}
}
圖形開發效果圖
QQ:375471598
微信:Q159837547
歡迎過來勾搭小邱同學,或者對文章提出修改意見,共同成長。