我們要在Java中實現一個界面,首先就要解決一個問題:一個界面都有什么?比如我們的QQ登錄界面:
很明顯我們可以看到:輸入框、按鈕 、文字、圖片 、標題欄、窗體、復選框。
我們把它們按照功能分類可以分為:容器、組件和元素。
容器:可以加載其他組件/控件,上述窗體為頂級容器。
組件:輸入框、按鈕、滑桿、菜單、選項卡、選擇器、文字和圖片等。
元素:尺寸 、顏色、字體、布局。
清楚了上述概念,我們才可以規划我們建立一個界面的步驟:
1. 建立容器對象
2. 設置容器對象的屬性值 、設置布局
3. 添加組件(創建對象、設置屬性、添加到對應容器上)
4. 可視化
我們在這里要用到的兩個包分別是java.awt和java.swing,前者是早期界面開發包,后者是升級后的可視化包。
下面附上代碼:
1 import javax.swing.*; 2 import java.awt.*; 3 4 public class LoginUI extends JFrame{ 5 public static void main(String[] args) { 6 LoginUI U = new LoginUI(); 7 U.initUI(); 8 } 9 public void initUI() 10 { 11 //建立窗體 12 this.setSize(400, 550); //窗體大小 13 this.setTitle("登錄界面"); //標題 14 this.setDefaultCloseOperation(EXIT_ON_CLOSE); //退出界面即關閉程序 15 this.setLocationRelativeTo(null); //窗體生成位置變為中央 16 17 //流式布局 18 FlowLayout fl = new FlowLayout(); 19 this.setLayout(fl); 20 21 //組件 22 ImageIcon img = new ImageIcon("C:\\Users\\admin\\Desktop\\頭像.jpeg"); //圖片 23 JButton bu = new JButton("Login"); //按鈕 24 JTextField nameJTF = new JTextField(); //文字輸入框 25 JPasswordField passwordJTF = new JPasswordField(); //密碼輸入框 26 JCheckBox jcb = new JCheckBox("確認已閱讀《用戶隱私條款》"); //復選框 27 28 JLabel Img = new JLabel(img); //圖片標簽(載體) 29 JLabel name = new JLabel("賬號:"); //文字標簽 30 JLabel password = new JLabel("密碼:"); //文字標簽 31 32 Dimension D = new Dimension(300,20); //輸入框大小 33 nameJTF.setPreferredSize(D); 34 passwordJTF.setPreferredSize(D); 35 36 //添加組件 37 this.add(Img); 38 39 this.add(name); 40 this.add(nameJTF); 41 42 this.add(password); 43 this.add(passwordJTF); 44 45 this.add(bu); 46 this.add(jcb); 47 48 //可視化 49 this.setVisible(true); 50 51 //復選框接口 52 CheckBoxListener LoginC = new CheckBoxListener(); 53 jcb.addChangeListener(LoginC); 54 55 // 56 CBActionListener LoginCBA = new CBActionListener(); 57 jcb.addActionListener(LoginCBA); 58 59 //接口 60 LoginListener Loginl = new LoginListener(); 61 bu.addActionListener(Loginl); 62 Loginl.namein = nameJTF; 63 Loginl.passwordin = passwordJTF; 64 65 } 66 }
我們先不去管復選框接口以后的代碼,這些都是為了實現事件監聽功能用的,我們在這里只需要生成一個界面。首先建立窗體我們必須要用到的一個類是JFrame,在這里我選擇了用繼承的方式寫這段代碼,當然還有另外一種寫法就是不繼承JFrame:
直接用Jframe創建對象:
1 JFrame jf = new JFrame(); 2 jf.setTitle("登錄"); 3 jf.setSize(500,700);// 寬 高 單位 像素 4 jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);// 關閉時退出進程 5 jf.setLocationRelativeTo(null);// 居中顯示
可以看到我們生成組件的時候有圖片(IamgeIcon)、按鈕(JButton)、輸入框(JTextField、JPasswordField)、復選框(JCheckBox)。我們在創建相應的對象時,可以在構造函數里放入字符串,比如按鈕,最后按鈕上的文字就是是輸入的字符串。
圖片IamgeIcon后面則是你想要的生成的圖片的絕對路徑。除此之外,要把文字和圖片添加到界面上必須要用標簽(JLabel)。為這些組件設置屬性,我們會用到的是Dimension,我們上面只設置了輸入框的大小。
創建完組件,因為我們用的是流式布局。它的特點是:將組件按從左到右從上到下依次排列,放不下則自動換行。所以我們要提前設計好將組件添加到窗體上面的順序。
最后一步:可視化(沒有這步最后什么都看不到)。
看看最后的效果: