你的位置:首页 > Java教程

[Java教程]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       @Override48       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   @Override147   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的界面就简单完成了,下一步就是注册界面练习输入输出流。详情关注下一篇随笔~