欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

java图形化界面实现登录窗口

程序员文章站 2023-12-12 14:37:52
登录窗口一般很常见,现在让我们自己也来写一个吧! ps:很多import是重复的,是因为我是分了几个类写的,必须单独导入 //模拟qq登录窗口 import...

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

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();
 }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

上一篇:

下一篇: