当前位置: 移动技术网 > IT编程>开发语言>Java > java图形化界面实现登录窗口

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

2019年07月19日  | 移动技术网IT编程  | 我要评论

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

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

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

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网