如何用java图形化界面实现一个登录窗口

登录窗口一般很常见,现在让我们自己也来写一个吧!

PS:很多import是重复的,是因为我是分了几个类写的,必须单独导入


//模拟qq登录窗口
import java.awt.*;
import java.io.*;
import java.awt.event.*;
import javax.swing.*;

public class QQGUI extends JFrame implements ActionListener{
    private JLabel userLa;
    private JLabel pwdLa;
    private JLabel verCodeLa;//验证码
    private JTextField userTxt;
    private JPasswordField pwdTxt;
    private JTextField verCodeTxt;//验证码
    private JButton sureBt;
    private JButton quitBt;
    private Mypanel mp;

    //构造方法
    public QQGUI()
    {
        Init();
    }
    public void Init()
    {
        Frame frame = new Frame("QQ登录");

        //创建出控件对象(因为上面只是声明出来,并没有给出实际的空间)

        //用户文本
        userLa = new JLabel();
        userLa.setText("用户名:");
        userLa.setSize(60, 50);
        userLa.setLocation(100, 80);

        //密码文本
        pwdLa = new JLabel();
        pwdLa.setText("密码:");
        pwdLa.setSize(50, 50);
        pwdLa.setLocation(100, 120);

        //用户输入框
        userTxt = new JTextField();
        userTxt.setSize(100, 20);
        //this.setSize(width, height)
        userTxt.setLocation(170, 95);

        //密码输入框
        pwdTxt = new JPasswordField();
        pwdTxt.setSize(100, 20);
        pwdTxt.setLocation(170, 135);

        //确认按钮
        sureBt = new JButton("登录");
        sureBt.setSize(60, 25);
        sureBt.setLocation(135, 260);

        //退出按钮
        quitBt = new JButton("退出");
        quitBt.setSize(60, 25);
        quitBt.setLocation(240, 260);

        //验证码文本
        verCodeLa = new JLabel();
        verCodeLa.setText("验证码:");
        verCodeLa.setSize(60, 50);
        verCodeLa.setLocation(100,165);

        //验证码文本框
        verCodeTxt = new JTextField();
        verCodeTxt.setSize(100, 20);
        verCodeTxt.setLocation(170, 180);

        //验证码
        mp = new Mypanel();
        mp.setSize(100, 30);
        mp.setLocation(280, 175);

        //登录方式选择框
        JComboBox xlk=new JComboBox();
        xlk.setSize(60, 20);
        xlk.setLocation(250, 220);
        xlk.addItem("在线");
        xlk.addItem("隐身");
        xlk.addItem("离开");


        this.setLayout(null);
        this.setSize(500, 400);
        this.add(userLa);
        this.add(pwdLa);
        this.add(userTxt);
        this.add(pwdTxt);
        this.add(sureBt);
        this.add(quitBt);
        this.add(verCodeLa);
        this.add(verCodeTxt);
        this.add(mp);
        this.add(xlk);
        sureBt.addActionListener(this);
        quitBt.addActionListener(this);
        this.setVisible(true);
    }
    //具体事件的处理
     public void actionPerformed(ActionEvent e)
     {
         //获取产生事件的事件源强制转换
         JButton bt = (JButton)e.getSource();
         //获取按钮上显示的文本
         String str = bt.getText();
         if(str.equals("登录"))
         {
             if(!CheckIsNull())
             {
                 //获取用户所输入的用户名
                 String user = userTxt.getText().trim();
                 //获取用户所输入的密码
                 String pwd = pwdTxt.getText().trim();
                 if(checkUserAndPwd(user,pwd))
                 {

                     //隐藏当前登录窗口
                     this.setVisible(false);
                     //验证成功创建一个主窗口
                     MainFrame frame = new MainFrame();
                 }
                 else
                 {
                     //如果错误则弹出一个显示框
                     JOptionPane pane = new JOptionPane("用户或密码错误");
                     JDialog dialog  = pane.createDialog(this,"警告");
                     dialog.show();
                 }
             }
         }
         else
         {
             //调用系统类中的一个正常退出
             System.exit(0);
         }
     }
     private boolean CheckIsNull()
     {
         boolean flag = false;
         if(userTxt.getText().trim().equals(" "))
         {
             flag = true;
         }
         else
         {
             if(pwdTxt.getText().trim().equals(" "))
             {
                 flag = true;
             }
         }
         return flag;
     }
     private boolean checkUserAndPwd(String user,String pwd)
     {
         boolean result = false;
         try
         {
             FileReader  file = new FileReader("D:\\Workspaces\\MyEclipse 8.5\\testGUI.txt"); 
             BufferedReader bre =  new BufferedReader(file);
             String str = bre.readLine();

            while(str!=null)
            {
                 String[] strs = str.split(",");
                 if(strs[0].equals(user))
                 {
                     if(strs[1].equals(pwd))
                     result = true;
                 }
                 str = bre.readLine();
            }
            file.close();
         }catch(Exception ex)
         {
             System.out.print("");
         }
         return result;
     }
}

//MainFrame类
import javax.swing.*;
public class MainFrame extends JFrame {
    public MainFrame()
    {
        this.setSize(300, 300);
        this.setVisible(true);
    }
}

//验证码的生成
import java.awt.*;
import java.util.*;
public class Mypanel extends Panel {
    public void paint(Graphics g)
    {
        int height = 50;
        int width = 90;
        //验证码框背景颜色
        g.setColor(Color.LIGHT_GRAY);
        //填充验证码背景
        g.fillRect(0, 0, width, height);
        g.setColor(Color.BLACK);
        g.drawRect(0, 0, width-1, height-1);
        Random r = new Random();
        //设置干扰点
        for(int i = 0;i<100;i++)
        {
            int x = r.nextInt(width)-1;
            int y = r.nextInt(height)-1;
            g.drawOval(x, y, 2, 2);
        }
        g.setFont(new Font("黑体",Font.BOLD,20));//设置验证码字体以及大小
        g.setColor(Color.RED);//设置验证码字体颜色
        //生成随机验证码
        char[] tmp = ("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();
        StringBuilder sb = new StringBuilder();
        for(int i = 0;i<4;i++)
        {
            int pos = r.nextInt(tmp.length);
            char c = tmp[pos];
            sb.append(c + " ");
        }
        g.drawString(sb.toString(), 10, 15);//写入验证码
    }
}

//下拉框的实现
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class xialakuang extends JFrame {
    private JComboBox comboBox;//定义一个组合框
    public void xia ()
    {

        //JPanel panel = new JPanel();//创建一个JPanel面板
        comboBox = new JComboBox();
        comboBox.addItem("在线");
        comboBox.addItem("隐身");
        comboBox.addItem("离开");

        this.add(comboBox);
        //this.add(panel);
        this.setSize(200, 100);
        this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        this.setVisible(true);
    }
}

//测试
public class testQQGUI {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        QQGUI frame = new QQGUI();
    }
}
  • 18
    点赞
  • 78
    收藏
    觉得还不错? 一键收藏
  • 14
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值