一、java的圖形界面
1.awt java.awt
jdk1.4之前推出的圖形界面,用c/c++編寫,跨平台性不好
2.swing javax.swing
jdk1.4時推出的圖形界面,跨平台性好
二、常用的組件
1.容器組件
JFrame 窗體類 最頂級的容器(默認布局為邊框布局,不能自己互相添加)
JPanel 面板類 最靈活的容器(可以自己互相添加)
2.元素組件
JLabel 標簽類
JTextField 文本輸入框類(可以設置框內字符、輸入框長度)
JPasswordField 密碼輸入框類(框內字符會被特定字符代替)
JCheckBox 復選框類
JComboBox 下拉框類
JButton 按鈕類
容器和組件都是swing包下的類。javax.swing.JFrame
三、常用的布局
1.布局類只能用在容器中。設置布局時需用setLayout()
BorderLayout 邊框布局(將窗體分為上下左右中五個區域,調用時分別.NORTH,.SOUTH,.WEST,.EAST,.CENTER,若未標明表示CENTER,未添加布局時默認為邊框布局加在中央)
FlowLayout 流式布局(如同文本文檔一樣一行一行排列,排列滿換行,默認方向為從左向右,可以設置對齊方向)
GridLayout 網格布局(可以設置幾列幾行,間距)
這三種都是位於awt包下的類。java.awt.***Layout
四、簡單登錄界面的實現
1.新建一個xxx類(Login),在類中定義主函數。
2.在類中定義一個初始化界面的方法(initUI)
3.在初始化界面的方法中,實例化一個頂級容器(JFrame)類的對象。
4.設置JFrame對象的屬性值(標題,大小,顯示位置,關閉退出程序,禁止調整大小,可見,該步完成對一個窗體的創建)
5.實例化元素組件對象,將對象添加到窗體上
6.在主函數中實例化Login類的對象,用對象名調用初始化界面的方法。
注:setDefaultCloseOperation()括號中可選數字,3是關閉時退出程序。0是不關閉。1是隱藏,2是關閉時程序繼續工作。
setVisible(true)必須放在最后才能顯示所有組件。true為可見。
setSize()大小為像素點的大小。默認起點為左上角。
五、代碼
1.簡單的登錄界面
可以用流式布局或者邊框布局。
Java代碼
package cn.wz.study0718;
//定義一個登錄界面
public class showFrameqq {
// 入口主函數
public static void main(String[] args) {
// 實例化showFrameqq類的對象
showFrameqq showqq = new showFrameqq();
//調用qq界面的方法
showqq.initGUI();
}
//定義一個qq界面的方法
public void initGUI(){
//實例化一個JFrame類的對象
javax.swing.JFrame jf = new javax.swing.JFrame();
//設置窗體的標題屬性
jf.setTitle("QQ登錄界面");
//設置窗體的大小屬性
jf.setSize(300,200);
//設置窗體的位置屬性
jf.setLocation(450,200);
//設置窗體關閉時退出程序
jf.setDefaultCloseOperation(3);
//設置禁止調整窗體的大小
jf.setResizable(false);
//實例化一個布局類的對象
java.awt.FlowLayout fl = new java.awt.FlowLayout();
//設置窗體的布局方式為流式布局
jf.setLayout(fl);
//實例化一個JLabel標簽類的對象
javax.swing.JLabel jlaName = new javax.swing.JLabel(" ");
//將jlaName對象添加到容器JFrame對象上
jf.add(jlaName);
//實例化一個JTextField對象
javax.swing.JTextField jteName = new javax.swing.JTextField("賬號",20);
//將jteName對象添加到容器JFrame對象上
jf.add(jteName);
//實例化一個JLabel對象
javax.swing.JLabel jlaName2 = new javax.swing.JLabel("注冊賬號");
//將jlaName2對象添加到容器JFrame對象上
jf.add(jlaName2);
//實例化一個JPasswordField對象
javax.swing.JPasswordField jpaName = new javax.swing.JPasswordField("請輸入密碼",20);
//將jpaName對象添加到容器JFrame對象上
jf.add(jpaName);
//實例化一個JLabel對象
javax.swing.JLabel jlaName3 = new javax.swing.JLabel("找回密碼");
//將jlaName3對象添加到容器JFrame對象上
jf.add(jlaName3);
//實例化一個JCheckBox對象
javax.swing.JCheckBox jchName = new javax.swing.JCheckBox("記住密碼");
//將jchName3對象添加到容器JFrame對象上
jf.add(jchName);
//實例化一個JCheckBox對象
javax.swing.JCheckBox jchName2 = new javax.swing.JCheckBox("自動登錄");
//將jchName3對象添加到容器JFrame對象上
jf.add(jchName2);
//實例化一個JCheckBox對象
javax.swing.JButton jbuName = new javax.swing.JButton(" 登 錄 ");
//將jButton對象添加到容器JFrame對象上
jf.add(jbuName);
jf.setVisible(true);
}
}
package cn.wz.study0718;
//定義一個登錄界面
public class showFrameqq {
// 入口主函數
public static void main(String[] args) {
// 實例化showFrameqq類的對象
showFrameqq showqq = new showFrameqq();
//調用qq界面的方法
showqq.initGUI();
}
//定義一個qq界面的方法
public void initGUI(){
//實例化一個JFrame類的對象
javax.swing.JFrame jf = new javax.swing.JFrame();
//設置窗體的標題屬性
jf.setTitle("QQ登錄界面");
//設置窗體的大小屬性
jf.setSize(300,200);
//設置窗體的位置屬性
jf.setLocation(450,200);
//設置窗體關閉時退出程序
jf.setDefaultCloseOperation(3);
//設置禁止調整窗體的大小
jf.setResizable(false);
//實例化一個布局類的對象
java.awt.FlowLayout fl = new java.awt.FlowLayout();
//設置窗體的布局方式為流式布局
jf.setLayout(fl);
//實例化一個JLabel標簽類的對象
javax.swing.JLabel jlaName = new javax.swing.JLabel(" ");
//將jlaName對象添加到容器JFrame對象上
jf.add(jlaName);
//實例化一個JTextField對象
javax.swing.JTextField jteName = new javax.swing.JTextField("賬號",20);
//將jteName對象添加到容器JFrame對象上
jf.add(jteName);
//實例化一個JLabel對象
javax.swing.JLabel jlaName2 = new javax.swing.JLabel("注冊賬號");
//將jlaName2對象添加到容器JFrame對象上
jf.add(jlaName2);
//實例化一個JPasswordField對象
javax.swing.JPasswordField jpaName = new javax.swing.JPasswordField("請輸入密碼",20);
//將jpaName對象添加到容器JFrame對象上
jf.add(jpaName);
//實例化一個JLabel對象
javax.swing.JLabel jlaName3 = new javax.swing.JLabel("找回密碼");
//將jlaName3對象添加到容器JFrame對象上
jf.add(jlaName3);
//實例化一個JCheckBox對象
javax.swing.JCheckBox jchName = new javax.swing.JCheckBox("記住密碼");
//將jchName3對象添加到容器JFrame對象上
jf.add(jchName);
//實例化一個JCheckBox對象
javax.swing.JCheckBox jchName2 = new javax.swing.JCheckBox("自動登錄");
//將jchName3對象添加到容器JFrame對象上
jf.add(jchName2);
//實例化一個JCheckBox對象
javax.swing.JButton jbuName = new javax.swing.JButton(" 登 錄 ");
//將jButton對象添加到容器JFrame對象上
jf.add(jbuName);
jf.setVisible(true);
}
}
2.簡單的計算器界面
分析:使用網格布局。
Java代碼
package cn.wz.study0718;
//定義一個計算器界面
public class showCalculaterFrame {
//入口主函數
public static void main(String[] args) {
//實例化一個showCalculaterFrame類的對象
showCalculaterFrame showCal = new showCalculaterFrame();
//調用計算器界面的方法
showCal.initGUI();
}
//定義一個計算器界面的方法
public void initGUI(){
//實例化一個JFrame類的對象
javax.swing.JFrame jf = new javax.swing.JFrame();
//設置窗體的標題屬性
jf.setTitle("計算器");
//設置窗體的大小屬性
jf.setSize(250,350);
//設置窗體的位置屬性
jf.setLocation(400,200);
//設置窗體關閉時退出程序
jf.setDefaultCloseOperation(3);
//設置禁止調整窗體的大小
jf.setResizable(false);
//實例化一個JTextField文本框類的對象
//javax.swing.JTextField jteName = new javax.swing.JTextField(20);
//將jteName添加到容器JFrame上
//jf.add(jteName);
//實例化一個布局類對象
java.awt.GridLayout gr = new java.awt.GridLayout(5,4);
//設置窗體的布局方式為網格布局
jf.setLayout(gr);
//實例化十九個個JButton對象、一個JTextField對象
javax.swing.JButton jb1 = new javax.swing.JButton("1");
javax.swing.JButton jb2 = new javax.swing.JButton("2");
javax.swing.JButton jb3 = new javax.swing.JButton("3");
javax.swing.JButton jb4 = new javax.swing.JButton("4");
javax.swing.JButton jb5 = new javax.swing.JButton("5");
javax.swing.JButton jb6 = new javax.swing.JButton("6");
javax.swing.JButton jb7 = new javax.swing.JButton("7");
javax.swing.JButton jb8 = new javax.swing.JButton("8");
javax.swing.JButton jb9 = new javax.swing.JButton("9");
javax.swing.JButton jb0 = new javax.swing.JButton("0");
javax.swing.JButton jba = new javax.swing.JButton("+");
javax.swing.JButton jbb = new javax.swing.JButton("-");
javax.swing.JButton jbc = new javax.swing.JButton("*");
javax.swing.JButton jbd = new javax.swing.JButton("/");
javax.swing.JButton jbe = new javax.swing.JButton("=");
javax.swing.JButton jbf = new javax.swing.JButton("AC");
javax.swing.JButton jbg = new javax.swing.JButton("sqrt");
javax.swing.JButton jbh = new javax.swing.JButton("1/x");
javax.swing.JButton jbi = new javax.swing.JButton(".");
javax.swing.JTextField jte = new javax.swing.JTextField();
//將JButton對象、JTextField對象添加到容器JFrame上
jf.add(jte);
jf.add(jbf);
jf.add(jbg);
jf.add(jbh);
jf.add(jb1);
jf.add(jb2);
jf.add(jb3);
jf.add(jba);
jf.add(jb4);
jf.add(jb5);
jf.add(jb6);
jf.add(jbb);
jf.add(jb7);
jf.add(jb8);
jf.add(jb9);
jf.add(jbc);
jf.add(jb0);
jf.add(jbi);
jf.add(jbe);
jf.add(jbd);
//設置窗體是否可見
jf.setVisible(true);
}
}
轉自:http://www.bdqn.cn/news/201307/10424.shtml
