您的位置:首页 > 编程语言 > Java开发

JAVA swing之用户登陆界面

2015-05-15 16:05 483 查看
一:本文主要介绍用java画图写一个用户登录界面,其中包括的功能效果有:

1:新用户的创建

2:将用户信息保存在txt文件,文件路径设置为D:\\map\\Secret1.txt,路径可以自行修改

3:切换用户

4:更改密码

5:可以做到访问电脑硬盘更换头像

二:代码

:共由8个.java文件构成

1:MainFrame

作用:主窗体

代码:

package TEST;

import java.awt.BorderLayout;

import java.awt.FlowLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.io.File;

import java.io.IOException;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JMenu;

import javax.swing.JMenuBar;

import javax.swing.JMenuItem;

import TEST.objectContainer;

import TEST.ChangePasswordFrame;

import TEST.ImageBufferFrame;

import TEST.ReadTxtFile;

import TEST.Register;

import TEST.login;

public class MainFrame extends JFrame{

static JButton JB1,JB2;
static JMenu JB3;
JMenuBar menubar=new JMenuBar();
JMenuItem ChangeUser,ChangePassword,Exit;
static ChangePasswordFrame CPF;
static login  log;
static Register reg;
static ReadTxtFile read;
static ImageBufferFrame IBF=null;

    public MainFrame(){
setSize(500,300);
setLocation(400,400);
JB1=new JButton("用户登录");
JB2=new JButton("选择头像");
JB3=new JMenu("");
JB1.setBounds(10, 10,100 ,100);
JB2.setBounds(10, 10,100 ,100);
JB3.setBounds(10, 10,100 ,100);
ChangeUser=new JMenuItem("切换用户");
ChangePassword=new JMenuItem("修改密码");
Exit=new JMenuItem("退出当前账户");
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setLayout(new BorderLayout());
add(menubar,BorderLayout.NORTH);
menubar.add(JB1);
menubar.add(JB2);
menubar.add(JB3);
JB3.add(ChangeUser);
JB3.add(ChangePassword);
JB3.add(Exit);
JB2.setVisible(false);
JB3.setVisible(false);
ChangeUser.addActionListener(new changerUser());
ChangePassword.addActionListener(new changePassword());
Exit.addActionListener(new UserLoad());
JB1.addActionListener(new UserLoad());
 JB2.addActionListener(new ChangeLogo()); 

}

class UserLoad implements ActionListener{

 public void actionPerformed(ActionEvent e)
 {
 objectContainer.frame.log.setVisible(true);
 objectContainer.frame.log.f1.setText("");
objectContainer.frame.log.f2.setText("");
 }
}
class ChangeLogo implements ActionListener{
 public void actionPerformed(ActionEvent e)
 {
 JB2.setText("");
try {
objectContainer.frame.IBF=new ImageBufferFrame();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
 }
}
class changerUser implements ActionListener{
 public void actionPerformed(ActionEvent e)
 {
 objectContainer.frame.log.setVisible(true);
 objectContainer.frame.log.f1.setText("");
objectContainer.frame.log.f2.setText("");
 }
}
class changePassword implements ActionListener{
 public void actionPerformed(ActionEvent e)
 {
 objectContainer.frame.CPF.setVisible(true);
objectContainer.frame.CPF.f1.setText("");
objectContainer.frame.CPF.f2.setText("");
 }
}
class exit implements ActionListener{
 public void actionPerformed(ActionEvent e)
 {
 JB2.setVisible(false);
JB3.setVisible(false);
 }
}
public static void main(String argS[]) throws IOException{
File f1 = new File("D:\\map\\Secret1.txt");
if(!f1.exists()){f1.createNewFile();}
MainFrame frame=objectContainer.buildFrame();
frame.setVisible(true);
CPF=new ChangePasswordFrame();
log=new login();
    reg=new Register();
read=new ReadTxtFile();
log.setVisible(false);
CPF.setVisible(false);
reg.setVisible(false);
}

}

2:objectContainer


作用:以便实现mainframe的单例模式,想获取程序中的mainframe,就调用buildFrame()

代码:

package TEST;

public class objectContainer {
static public MainFrame frame;

public static MainFrame buildFrame()
{
if(frame==null) frame=new MainFrame();
return frame;
}

}

3:login

作用:用户登陆界面

代码:

package TEST;

import java.awt.*;

import java.awt.event.*;

import java.io.IOException;

import javax.swing.*;

import TEST.objectContainer;

public class login extends JFrame{

 TextField f1;

 TextField f2;

 TextField f3;

 TextField f4;

 JButton b1;

 JButton b2;

 JButton b3;

 String power;//表示权限

//ImageIcon icon=new ImageIcon(MainFrame.class.getResource("/res/background.jpg" ));Image ima=icon.getImage();

// JLabel label = new JLabel(new ImageIcon(ima));

 login(){

  Container cp=getContentPane();

  //cp.add(label);    //添加图片用

  cp.setLayout(new GridLayout(3,1));

  Label l1=new Label("账号");

  Label l2=new Label("密码");

  Panel p1=new Panel();

  Panel p2=new Panel();

  Panel p3=new Panel();

   f1=new TextField(10);

      f2=new TextField(10);

      f2.setEchoChar('*');

   b1=new JButton("登录");

   b2=new JButton("重置");

   b3=new JButton("注册新用户");

  p1.add(l1);

  p1.add(f1);

  p2.add(l2);

  p2.add(f2);

  p3.add(b1);

  p3.add(b2);

  p3.add(b3);

  cp.add(p1);

  cp.add(p2);

  cp.add(p3);

  b1.addActionListener(new Enter());

  b2.addActionListener(new ReWrite()); 

  b3.addActionListener(new register()); 

  this.setTitle("系统登录");

  this.setSize(600,200);

  this.setVisible(true);

  Toolkit toolkit = Toolkit.getDefaultToolkit();

  Dimension scmSize = toolkit.getScreenSize();

this.setLocation(scmSize.width / 2 -300 ,
scmSize.height / 2 -100);

 }

 /*public static void main(String[] args) {

 new login();

 }*/

 class Enter implements ActionListener{

 public void actionPerformed(ActionEvent e)
 {  
             try {
if(objectContainer.frame.read.Read()){
JOptionPane.showMessageDialog(null,"登陆成功"); 
                                             //添加功能
objectContainer.frame.log.setVisible(false);
objectContainer.frame.JB2.setVisible(true);
objectContainer.frame.JB3.setVisible(true);
objectContainer.frame.JB3.setText(objectContainer.frame.log.f1.getText());
//objectContainer.frame.JB.setVisible(true);
 }
else{
JOptionPane.showMessageDialog(null,"账号或密码不正确");
}
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
 }
}
class ReWrite implements ActionListener{
 public void actionPerformed(ActionEvent e)
 {
  f1.setText("");
  f2.setText("");
  f1.requestFocus();
 }
}
class register implements ActionListener{
 public void actionPerformed(ActionEvent e)
 {
 objectContainer.frame. reg.setVisible(true);
  
 }
}

 }
4:Register

作用:用户注册界面

代码:

package TEST;

import java.awt.*;

import java.awt.event.*;

import java.io.IOException;

import javax.swing.*;

public class Register extends JFrame{

 TextField f1;

         TextField f2;

 TextField f3;

 JButton b1;

 JButton b2;

 String power;//表示权限

 Register(){

  Container cp=getContentPane();

  cp.setLayout(new GridLayout(4,1));

  Label l1=new Label("账号");

  Label l2=new Label("密码");

  Panel p1=new Panel();

  Panel p2=new Panel();

  Panel p4=new Panel();

   f1=new TextField(10);

      f2=new TextField(10);

      f2.setEchoChar('*');

   f3=new TextField(10);

   b1=new JButton("注册");

   b2=new JButton("重置");

  p1.add(l1);

  p1.add(f1);

  p2.add(l2);

  p2.add(f2);

  p4.add(b1);

  p4.add(b2);

  cp.add(p1);

  cp.add(p2);

  cp.add(p4);

  b2.addActionListener(new ReWrite());

  b1.addActionListener(new register());

  this.setTitle("注册界面");

  this.setSize(500,200);

  Toolkit toolkit = Toolkit.getDefaultToolkit();

  Dimension scmSize = toolkit.getScreenSize();

  this.setLocation(scmSize.width / 2 -250 ,

  scmSize.height / 2 -100);

 }

 class ReWrite implements ActionListener{

  public void actionPerformed(ActionEvent e)

  {

   f1.setText("");

   f2.setText("");

   f3.setText("");

   f1.requestFocus();

  }

 }

   class  register implements ActionListener{
 public void actionPerformed(ActionEvent e)
 { 
  try {
if(f1.getText().length()!=0&&f2.getText().length()!=0){
if(!objectContainer.frame.read.ReadUser()){
JOptionPane.showMessageDialog(null, "注册成功!");
new TextOutputTest();  //将账号信息写入到文件中
objectContainer.frame.reg.setVisible(false);
}
else JOptionPane.showMessageDialog(null, "账号已存在!");

}
  else{
  JOptionPane.showMessageDialog(null, "账号或密码不能为空!!");
 }
} catch (HeadlessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}

   }

}

5:ImageBufferFrame

作用:选择头像界面

代码:

package TEST;

import java.awt.FlowLayout;

import java.awt.Image;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.swing.ImageIcon;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.filechooser.FileNameExtensionFilter;

import java.awt.FlowLayout;

import java.awt.Image;

import java.awt.image.BufferedImage;

import java.io.File;

import java.io.IOException;

import javax.imageio.ImageIO;

import javax.swing.ImageIcon;

import javax.swing.JFileChooser;

import javax.swing.JFrame;

import javax.swing.filechooser.FileNameExtensionFilter;

public class ImageBufferFrame extends JFrame {
private JFileChooser jfc=new JFileChooser("."); 
public ImageBufferFrame() throws IOException{
  FileNameExtensionFilter filter1 = new FileNameExtensionFilter("*.png", "png");
  FileNameExtensionFilter filter2 = new FileNameExtensionFilter("*.jpg", "jpg");
  FileNameExtensionFilter filter3 = new FileNameExtensionFilter("*.jpeg", "jpeg");
      
       jfc.addChoosableFileFilter(filter1);
       jfc.addChoosableFileFilter(filter2);
       jfc.addChoosableFileFilter(filter3);
       jfc.setAcceptAllFileFilterUsed(false);
       jfc.setFileFilter(filter2);
           File file = jfc.getSelectedFile();
           int returnVal = jfc.showOpenDialog(ImageBufferFrame.this);
           if(returnVal == JFileChooser.APPROVE_OPTION)
           {
           String path = jfc.getSelectedFile().getAbsolutePath();
           ImageIcon im=new ImageIcon(path);
           im.setImage(im.getImage().getScaledInstance(200,200,Image.SCALE_DEFAULT));
objectContainer.frame.JB2.setIcon(im);
//objectContainer.frame.JL.setText(objectContainer.frame.log.f1.getText());
       }
}
/*public static void main(String args[]) throws IOException{
ImageBufferFrame IM=new ImageBufferFrame();
 IM.setVisible(true);
}*/

}

6:ChangePasswordFrame

作用:修改密码界面

修改方法:把txt文件中的信息全部读出来并更换要更换的密码,然后放到一个String类型的变量中,再把这个变量写入txt文件中(暂时没找到直接在元txt文件进行某一行信息的更换)

代码:

package TEST;

import java.awt.*;

import java.awt.event.*;

import java.io.IOException;

import javax.swing.*;

public class ChangePasswordFrame extends JFrame{

 TextField f1;

 TextField f2;

 TextField f3;

 TextField f4;

 JButton b1;

 JButton b2;

 String power;

 public ChangePasswordFrame(){

  Container cp=getContentPane();

  cp.setLayout(new GridLayout(4,1));

  Label l1=new Label("原密码");

  Label l2=new Label("新密码密码");

  Panel p1=new Panel();

  Panel p2=new Panel();

  Panel p4=new Panel();

   f1=new TextField(10);

      f2=new TextField(10);

      f2.setEchoChar('*');

   f3=new TextField(10);

   f4=new TextField(30);

   b1=new JButton("确定");

   b2=new JButton("重置");

  

  p1.add(l1);

  p1.add(f1);

  p2.add(l2);

  p2.add(f2);

  p4.add(b1);

  p4.add(b2);

  cp.add(p1);

  cp.add(p2);

  cp.add(p4);

  b1.addActionListener(new Enter());

  b2.addActionListener(new ReWrite()); 

  this.setTitle("修改密码");

  this.setSize(600,200);

  this.setVisible(true);

  Toolkit toolkit = Toolkit.getDefaultToolkit();

  Dimension scmSize = toolkit.getScreenSize();

this.setLocation(scmSize.width / 2 -300 ,
scmSize.height / 2 -100);

 }

 class Enter implements ActionListener{

  public void actionPerformed(ActionEvent e)

  {  

              try {
if(objectContainer.frame.read.ReturnPassword()){
JOptionPane.showMessageDialog(null,"密码已修改,请重新登录");
objectContainer.frame.JB2.setVisible(false);
objectContainer.frame.JB3.setVisible(false);
objectContainer.frame.CPF.setVisible(false);
objectContainer.frame.log.setVisible(true);
objectContainer.frame.log.f1.setText("");
objectContainer.frame.log.f2.setText("");
 }
else{
JOptionPane.showMessageDialog(null,"原密码不正确");
}
} catch (HeadlessException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
} catch (Exception e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}

  }

 }

 class ReWrite implements ActionListener{

  public void actionPerformed(ActionEvent e)

  {

   f1.setText("");

   f2.setText("");

   f3.setText("");

   f1.requestFocus();

  }

 }

 class register implements ActionListener{
 public void actionPerformed(ActionEvent e)
 {
 objectContainer.frame. reg.setVisible(true);
  
 }
}

 }
7:ReadTxtFile

作用:读取txt文件

代码

package TEST;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileNotFoundException;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.LineNumberReader;

import java.io.PrintWriter;

import java.io.RandomAccessFile;

 

public class ReadTxtFile {

   public boolean Read() throws IOException{
  File file = new File("D:\\map\\Secret1.txt");

       BufferedReader br = new BufferedReader(new FileReader(file));

       String line1,line2;

       while ((line1 = br.readLine()) != null) {

      line2 = br.readLine();

      if(line1.equals(objectContainer.frame.log.f1.getText())&&line2.equals(objectContainer.frame.log.f2.getText())){

      br.close();

      return true;

      }

       }

       br.close();

       return false;

   }

   public boolean ReadUser() throws IOException{
  File file = new File("D:\\map\\Secret1.txt");

       BufferedReader br = new BufferedReader(new FileReader(file));

       String line1,line2;

       while ((line1 = br.readLine()) != null) {

      line2 = br.readLine();

      if(line1.equals(objectContainer.frame.reg.f1.getText())){

      br.close();

      return true;

      }

       }

       br.close();

       return false;

   }

public boolean ReturnPassword() throws Exception{
File file = new File("D:\\map\\Secret1.txt");

    BufferedReader br = new BufferedReader(new FileReader(file));

    String line1,line2;

    FileWriter Writer = new FileWriter("D:\\map\\Secret1.txt",true);

    while ((line1 = br.readLine()) != null) {

    line2 = br.readLine();

    if(line2.equals(objectContainer.frame.CPF.f1.getText())){

   objectContainer.frame.read.delete(line2,objectContainer.frame.CPF.f2.getText());

    return true;

    }

    }

    br.close();

    return false;

}

public  void  delete(String PastWord,String ChangeWord) throws Exception {
File file = new File("D:\\map\\Secret1.txt");
    BufferedReader br = new BufferedReader(new FileReader(file));
   String s1 = null,s2=null;
   String file1 = "";
   s1 = br.readLine();
   while (s1 != null) {
    s2 = br.readLine();
       if (s1.equals(objectContainer.frame.log.f1.getText())&&s2.equals(PastWord)) {
               file1 +=(s1+"\r\n");
               file1 +=(ChangeWord+"\r\n");
       }
       else {
       
file1 +=(s1+"\r\n");

                file1 +=(ChangeWord+"\r\n");

                }

            s1 = br.readLine();
   }
   BufferedWriter bw = new BufferedWriter(new FileWriter(file));
   bw.write(file1);
   bw.close();
   br.close();
}

}
8:TextOutputTest

作用:把编辑框里面的内容写入txt文件

代码:

package TEST;

import java.io.BufferedReader;

import java.io.BufferedWriter;

import java.io.File;

import java.io.FileReader;

import java.io.FileWriter;

import java.io.IOException;

import java.io.PrintWriter;

import java.io.RandomAccessFile;

import java.util.Scanner;

public class TextOutputTest {
private static final String fileName = "D://map//Secret1.txt";
public TextOutputTest () throws IOException{
 RandomAccessFile randomFile = new RandomAccessFile("D://map//Secret1.txt", "rw");

          long fileLength = randomFile.length();

          randomFile.seek(fileLength);

          String str1 = objectContainer.frame.reg.f1.getText();
 String str2 = objectContainer.frame.reg.f2.getText();
 if (str1 != null && str1.length() != 0) {
 randomFile.writeBytes(str1+"\r\n");
 }
 if (str2 != null && str2.length() != 0) {
 randomFile.writeBytes(str2+"\r\n");
 }

          randomFile.close();
}

}

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java swing 界面 密码 filter