JFrome 登陆/注册/回显无数据库连接小程序

当离开RCP插件区重新回顾一下JFrame窗口程序的标签、页面间的跳转。

完成一个登陆、注册界面。(界面完成后练习输入输出流,将前台的注册信息保存到一个文件夹下的.txt文件中)

首先向通过JFrame写出一个登陆窗体来,然后给注册按钮绑定actionListener监听。

以下为login页面

 1 package demo;
 2 
 3 import java.awt.GridLayout;
 4 import java.awt.event.ActionEvent;
 5 import java.awt.event.ActionListener;
 6 
 7 import javax.swing.JButton;
 8 import javax.swing.JFrame;
 9 import javax.swing.JLabel;
10 import javax.swing.JPanel;
11 import javax.swing.JPasswordField;
12 import javax.swing.JTextField;
13 //导入必要的包
14 
15 public class Demo_login extends JFrame{
16    
17     JTextField jTextField ; //定义文本框组件
18     JPasswordField jPasswordField; //定义密码框组件
19     JLabel jLabel1,jLabel2;
20     JPanel jp1,jp2,jp3;
21     JButton jb1,jb2,jb3;  //创建按钮
22     public Demo_login(){
23         jTextField = new JTextField(12);
24         jPasswordField = new JPasswordField(13);
25         jLabel1 = new JLabel("用户名");
26         jLabel2 = new JLabel("密码");
27         jb1 = new JButton("确认");
28         jb2 = new JButton("取消");
29         jb3 = new JButton("注册");
30         jp1 = new JPanel();
31         jp2 = new JPanel();
32         jp3 = new JPanel();
33         
34         //设置布局    
35         this.setLayout(new GridLayout(3,1));
36         
37         jp1.add(jLabel1); 
38         jp1.add(jTextField);//第一块面板添加用户名和文本框 
39         
40         jp2.add(jLabel2);
41         jp2.add(jPasswordField);//第二块面板添加密码和密码输入框
42         
43         jp3.add(jb1);
44         jp3.add(jb2);
45         jp3.add(jb3);//第三块面板添加确认和取消
46         jb3.addActionListener(new ActionListener() {
47             @Override
48             public void actionPerformed(ActionEvent e) {
49                 Demo_add();    
50                 }
51 
52             public void Demo_add() {
53                 new Demo_add();
54                 
55             }
56         });
57        
58      
59       
60         //        jp3.setLayout(new FlowLayout());    //因为JPanel默认布局方式为FlowLayout,所以可以注销这段代码.
61         this.add(jp1);
62         this.add(jp2);
63         this.add(jp3);  //将三块面板添加到登陆框上面
64         //设置显示
65         this.setSize(300, 200);
66         //this.pack();
67         this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
68         this.setVisible(true);
69         this.setTitle("登陆");
70          
71     }
72     public static void main(String[] args){
73         new Demo_login();
74         
75     }
76 }

下一步规划注册信息和完成注册界面

  1 package demo;
  2 
  3 
  4 import java.awt.Color;
  5 import java.awt.FlowLayout;
  6 import java.awt.Graphics;
  7 import java.awt.Image;
  8 import java.awt.event.ActionEvent;
  9 import java.awt.event.ActionListener;
 10 
 11 import javax.swing.Box;
 12 import javax.swing.ButtonGroup;
 13 import javax.swing.ImageIcon;
 14 import javax.swing.JButton;
 15 import javax.swing.JFrame;
 16 import javax.swing.JLabel;
 17 import javax.swing.JPanel;
 18 import javax.swing.JRadioButton;
 19 import javax.swing.JTextArea;
 20 import javax.swing.JTextField;
 21 
 22 
 23 public class Demo_add extends JFrame{
 24 
 25     public static void main(String[] args) {
 26         new Demo_add();
 27     }
 28 
 29     String [][] arr = new  String [100][5];
 30     JLabel id,name,age, gender,introduction;
 31     ButtonGroup bg;
 32     JRadioButton female,male;
 33     JTextArea textArea;
 34     JTextField tf_id,tf_name,tf_age,jf_introduction;
 35     JButton btn_register;
 36     MyPanel jp;
 37     Box box_id,box_name,box_age,box_gender,box_introduction,baseBox;
 38 
 39     public Demo_add() {
 40 
 41         setVisible(true);
 42         setSize(400, 450);
 43         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 44         instantiateFunction();
 45         addFunction();
 46         
 47 
 48     }
 49 
 50     public void instantiateFunction(){
 51         jp = new MyPanel(new ImageIcon("./src/picture/pic16.jpg").getImage());
 52         baseBox = Box.createVerticalBox();
 53         box_id = Box.createHorizontalBox();
 54         box_name = Box.createHorizontalBox();
 55         box_age = Box.createHorizontalBox();
 56         box_gender = Box.createHorizontalBox();
 57         box_introduction = Box.createHorizontalBox();
 58         btn_register = new JButton("注册");    
 59         tf_id = new JTextField(10);
 60         tf_name = new JTextField(10);
 61         tf_age = new JTextField(10);
 62         bg = new ButtonGroup();
 63         female = new JRadioButton("女");
 64         male = new JRadioButton("男");
 65         textArea = new JTextArea(9,20);
 66         listenerFunction();
 67 
 68     }
 69 
 70     /**
 71      * 实现页面跳转和数组传递
 72      * */
 73 
 74     public void listenerFunction(){
 75         btn_register.addActionListener(new ActionListener() {
 76 
 77             @Override
 78             public void actionPerformed(ActionEvent e) {
 79                 
 80                 for (int i = 0; i < arr.length; i++) {
 81                     //先做一个判断,如果ID不为空,则传过去
 82                     if(arr[i][0]==null || arr[i][0].equals("")){
 83                         arr[i][0] =tf_id.getText();
 84                         arr[i][1] =tf_name.getText();
 85                         arr[i][2] =tf_age.getText();
 86                         
 87                         if(male.isSelected()){
 88                             arr[i][3] = male.getText();
 89                         }else{
 90                             arr[i][3] = female.getText();
 91                         }
 92                         arr[i][4] =textArea.getText();
 93                         
 94                         break;
 95                     }
 96                 }
 97                 new Demo_addMessage(arr);
 98 
 99             }
100         });
101     }
102 
103     public void addFunction(){
104         add(jp);
105         box_id.add(new JLabel("ID:       "));
106         box_id.add(tf_id);
107 
108         box_name.add(new JLabel("姓名:  "));
109         box_name.add(tf_name);
110 
111         box_age.add(new JLabel("年龄:  "));
112         box_age.add(tf_age);
113         
114         box_gender.add(new JLabel("性别:  "));
115         bg.add(male);
116         bg.add(male);
117         box_gender.add(male);
118         box_gender.add(female);    
119          
120         box_introduction.add(textArea);
121 
122 
123         baseBox.add(Box.createVerticalStrut(15));
124         baseBox.add(box_id);
125         baseBox.add(Box.createVerticalStrut(15));
126         baseBox.add(box_name);
127         baseBox.add(Box.createVerticalStrut(15));
128         baseBox.add(box_age);
129         baseBox.add(Box.createVerticalStrut(15));
130         baseBox.add(box_gender);
131         baseBox.add(Box.createVerticalStrut(15));
132         baseBox.add(new JLabel("个人简介:  "));
133         baseBox.add(box_introduction);
134         baseBox.add(Box.createVerticalStrut(15));
135         baseBox.add(btn_register);
136         jp.add(baseBox);
137         
138     }
139 }
140 
141 class MyPanel extends JPanel{
142     Image img;
143     public MyPanel(Image img) {
144         this.img = img;
145     }
146     @Override
147     protected void paintComponent(Graphics g) {
148         super.paintComponent(g);
149         g.drawImage(img,0,0, this.getWidth(), this.getHeight(), this);
150     }
151 }

正常开发中注册一般会伴随着回显信息的,因为是对JFrame的熟悉所以数据不是来自数据库,我们直接对这个界面中输入的数据回显

 1 package demo;
 2 
 3 
 4 
 5 
 6 
 7 
 8 import javax.swing.ImageIcon;
 9 import javax.swing.JFrame;
10 import javax.swing.JPanel;
11 import javax.swing.JScrollPane;
12 import javax.swing.JTable;
13 
14 
15 
16 public class Demo_addMessage extends JFrame {
17 
18     
19     JTable table;
20     JPanel jp;
21     //MyDate model;
22     JTable tabel;
23     ImageIcon img1,img2,img3;
24     
25     public Demo_addMessage(String [][] arr) {
26         System.out.println("跳过来了");
27         setVisible(true);
28         setSize(500, 500);
29         setTitle("保存信息界面");
30         setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
31         init(arr);
32 
33     }
34 
35     
36     private void init(String [][] arr) {
37         //标题数组
38                 String [] columns = {"ID","姓名","年龄","性别","个人简介"};
39 
40                 //项目的相对路径./代表项目名称
41                 /*img1 = new  ImageIcon("./src/picture/dm.png");
42                 img2 = new  ImageIcon("./src/picture/pic12.jpg");
43                 img3 = new  ImageIcon("./src/picture/pic2.jpg");*/
44                 //model = new MyDate(arr,columns);
45                 jp = new JPanel();
46                 table = new JTable(arr,columns);//没有图片时的实例化
47                 //table = new JTable(model);//存在图片时的实例化
48                 table.setRowHeight(20);
49 
50                 JScrollPane scrollPanel = new JScrollPane(table);
51                 jp.add(scrollPanel);
52                 add(jp);
53         
54     }
55 
56 }

到这儿JFrame的界面就简单完成了,下一步就是注册界面练习输入输出流。详情关注下一篇随笔~

原文地址:https://www.cnblogs.com/overlord-mp/p/5711763.html