好久沒有總結這個月的學習了,先嘮叨幾句,這個月工作爛的一塌糊塗。跟老板吵架,然后辭職。今天是遞交辭職申請的倒數第三天。
Java用戶登陸這塊,主要還是學到了新的類:
1,邊界布局:BorderLayout。他主要分為五個布局,是JFrame(頂層容器),JDialog(創建對話框窗口的類)的默認布局方式。其最多容量為5個組件,超出5個得用其他的。設置方式為:BorderLayout.NORTH;BorderLayout.SOUTH;BorderLayout.CENTER;Borderlayout.CENTER;BorderLayout.LEFT;BorderLayout.RIGHT。
2,流式布局:FlowLayout。布局方式為從左到右,從上到下。是JPanel(輕量級容器)的默認面板布局。
3,網格布局:GridLayout。布局方式為行和列組成的網絡。布局方法:setLayout(new GridLayout(3,2,3,3));其中強兩位數字表示三行兩列,后兩位表示行與行的間距為3,列與列的間距為3.
接着,就接觸到JPanel面板。JPanel是非頂層容器,所以,一個界面只能由一個JFrame,但是可以有多個JPanel組件。其默認布局方式為流式布局。在JPanel這塊,學到了用戶登錄界面的設計。從而接觸到另外三個組件:文本框組件:JTextField;密碼框組件:JPasswordField;標簽組件:JLabel;復選框組件:JCheckBox;單選框組件:JRadioButton;按鈕組件JButton。
根據上面的組件和布局方式,我試着做了如下效果的一些代碼:
1,用戶登陸界面:
具體代碼如下:
1 import javax.swing.*; 2 3 import java.awt.*; //導入必要的包 4 5 public class denglu extends JFrame{ 6 JTextField jTextField ; //定義文本框組件 7 JPasswordField jPasswordField; //定義密碼框組件 8 JLabel jLabel1,jLabel2; 9 JPanel jp1,jp2,jp3; 10 JButton jb1,jb2; //創建按鈕 11 public denglu(){ 12 jTextField = new JTextField(12); 13 jPasswordField = new JPasswordField(13); 14 jLabel1 = new JLabel("用戶名"); 15 jLabel2 = new JLabel("密碼"); 16 jb1 = new JButton("確認"); 17 jb2 = new JButton("取消"); 18 jp1 = new JPanel(); 19 jp2 = new JPanel(); 20 jp3 = new JPanel(); 21 22 //設置布局 23 this.setLayout(new GridLayout(3,1)); 24 25 jp1.add(jLabel1); 26 jp1.add(jTextField);//第一塊面板添加用戶名和文本框 27 28 jp2.add(jLabel2); 29 jp2.add(jPasswordField);//第二塊面板添加密碼和密碼輸入框 30 31 jp3.add(jb1); 32 jp3.add(jb2); //第三塊面板添加確認和取消 33 34 // jp3.setLayout(new FlowLayout()); //因為JPanel默認布局方式為FlowLayout,所以可以注銷這段代碼. 35 this.add(jp1); 36 this.add(jp2); 37 this.add(jp3); //將三塊面板添加到登陸框上面 38 //設置顯示 39 this.setSize(300, 200); 40 //this.pack(); 41 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 42 this.setVisible(true); 43 this.setTitle("登陸"); 44 45 } 46 public static void main(String[] args){ 47 new denglu(); 48 } 49 }
2,根據復選框組件等其他組件,又寫了用戶調查界面:
具體代碼:
1 import javax.swing.ButtonGroup; 2 import javax.swing.JCheckBox; 3 import javax.swing.JFrame; 4 import javax.swing.JLabel; 5 import javax.swing.JPanel; 6 import javax.swing.JRadioButton; 7 8 import java.awt.*; 9 10 public class diaocha extends JFrame{ 11 JCheckBox jcb1,jcb2,jcb3; 12 JRadioButton jrb1,jrb2; 13 JLabel jLabel1,jLabel2; 14 JPanel jp1,jp2; 15 public diaocha(){ 16 jcb1 = new JCheckBox("華商報"); 17 jcb2 = new JCheckBox("三秦都市報"); 18 jcb3 = new JCheckBox("西安晚報"); 19 jrb1 = new JRadioButton("男"); 20 jrb2 = new JRadioButton("女"); 21 jLabel1 = new JLabel("您最常讀的報紙"); 22 jLabel2 = new JLabel("您的性別"); 23 jp1 = new JPanel(); 24 jp2 = new JPanel(); 25 //設置布局 26 this.setLayout(new GridLayout(2, 1)); 27 //添加組件 28 jp1.add(jLabel1); 29 jp1.add(jcb1); 30 jp1.add(jcb2); 31 jp1.add(jcb3); 32 jp2.add(jLabel2); 33 //現在這樣的話,最后還是會對性別進行全部選擇的。所以添加按鈕對象,對同一組單選按鈕驚醒分組 34 ButtonGroup bGroup = new ButtonGroup(); 35 bGroup.add(jrb1); 36 bGroup.add(jrb2); 37 jp2.add(jrb1); 38 jp2.add(jrb2); 39 this.add(jp1); 40 this.add(jp2); 41 42 //設置展示面板 43 this.setVisible(true); 44 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 45 this.setSize(200, 200); 46 } 47 public static void main(String[] args){ 48 new diaocha(); 49 } 50 }