java如何实现登录窗口(java,开发技术)

时间:2024-04-28 19:21:12 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

登录窗口主类

packageccnu.paint;importjava.awt.Color;importjava.awt.Font;importjava.awt.GridLayout;importjava.awt.Point;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.awt.event.MouseAdapter;importjava.awt.event.MouseEvent;importjava.io.File;importjava.io.FileInputStream;importjava.io.IOException;importjava.util.Enumeration;importjava.util.Properties;importjavax.swing.ImageIcon;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JPasswordField;importjavax.swing.JTextField;importccnu.util.Answer;importccnu.util.Verification;publicclassLoginextendsJFrame{privatestaticfinallongserialVersionUID=1L;privatePropertiespro=newProperties();privatebooleanver_code=false;//默认输入验证码错误privateAnsweranswer=null;privateJPanelp1=newJPanel();//添加到JPanel中的组件默认为流式布局privateJLabelluser=newJLabel("username:");privateJTextFieldusername=newJTextField(20);privateJPanelp2=newJPanel();privateJLabellpwd=newJLabel("password:");privateJPasswordFieldpwd=newJPasswordField(20);privateJPanelp4=newJPanel();privateJLabellVer=newJLabel("verification:");privateJTextFieldver=newJTextField(10);privateJLabelimg=newJLabel();privateJLabelresult=newJLabel();privateJPanelp3=newJPanel();privateJButtonok=newJButton("ok");privateJButtoncancel=newJButton("cancel");privateJButtonsignUp=newJButton("Signup");//用于账户注册//设置组件的监听publicvoidinitListener(){username.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){//JTextField的action是回车键Stringname=username.getText();//Login.this.setTitle(name);//System.out.println(name.hashCode()+"***"+"".hashCode());if(name.equals("")){JOptionPane.showMessageDialog(Login.this,"PleaseinputauserName!");}else{pwd.grabFocus();}}});pwd.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){Stringpassword=newString(pwd.getPassword());if(password.equalsIgnoreCase("")){JOptionPane.showMessageDialog(Login.this,"pleaseinputapassword!");}else{ver.grabFocus();}}});ok.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){//重新加载最新的账户文件try{pro.load(newFileInputStream(newFile("src/res/accouts.properties")));}catch(IOExceptione1){e1.printStackTrace();}check();}});//判断验证码是否正确ver.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){StringverCode=ver.getText();if(verCode.equals("")){JOptionPane.showMessageDialog(Login.this,"Pleaseinputaverification!");}else{if(verCode.equals(answer.getResult())){result.setIcon(newImageIcon(Login.this.getClass().getResource("/res/right.jpg")));//显示提示的图片信息(如√图片)ver_code=true;//检查之前,重新加载最新的账户文件try{pro.load(newFileInputStream(newFile("src/res/accouts.properties")));//将账户文件加载进来}catch(IOExceptione1){e1.printStackTrace();}check();}else{result.setIcon(newImageIcon(Login.this.getClass().getResource("/res/error.jpg")));//显示提示的图片信息(如×图片)ver_code=false;}}}});//点击图片会更改验证码img.addMouseListener(newMouseAdapter(){@OverridepublicvoidmouseClicked(MouseEvente){answer=Verification.verification();img.setIcon(newImageIcon(answer.getBufferedImage()));//设置验证码图案}});cancel.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){intoption=JOptionPane.showConfirmDialog(Login.this,"Areyousuretoexit?");//System.out.println("option="+option);if(option==0){//YesLogin.this.dispose();}}});signUp.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){newSignUp();}});}//初始化登录窗口及其组件的设置监听publicLogin(){super("Login");//加载账户文件try{pro.load(newFileInputStream(newFile("src/res/accouts.properties")));//从指定位置将账户文件加载进来}catch(IOExceptione){e.printStackTrace();}initListener();answer=Verification.verification();//生成验证码img.setIcon(newImageIcon(answer.getBufferedImage()));//设置初始验证码this.setLocation(newPoint(200,200));this.setSize(500,300);this.setLayout(newGridLayout(4,1,0,20));//垂直间隙为20pxp1.add(luser);p1.add(username);p2.add(lpwd);p2.add(pwd);p4.add(this.lVer);p4.add(this.ver);p4.add(this.img);result.setForeground(Color.red);result.setFont(newFont("楷体",Font.BOLD,20));p4.add(result);p3.add(ok);p3.add(cancel);p3.add(signUp);this.add(p1);this.add(p2);this.add(p4);this.add(p3);//this.setBackground(Color.blue);//JFrame的上层还有一个ContentPanethis.getContentPane().setBackground(Color.gray);this.setResizable(false);this.setVisible(true);this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//等价于Frame中的windowClosing事件}//检查用户名或密码publicvoidcheck(){StringverCode=ver.getText();if(verCode.equals("")){JOptionPane.showMessageDialog(Login.this,"Pleaseinputaverification!");return;}else{if(verCode.equals(answer.getResult())){result.setIcon(newImageIcon(Login.this.getClass().getResource("/res/right.jpg")));ver_code=true;}else{result.setIcon(newImageIcon(Login.this.getClass().getResource("/res/error.jpg")));ver_code=false;}}if(ver_code==false){JOptionPane.showMessageDialog(this,"verificationiserror!");return;}Stringname=username.getText();Stringpassword=newString(pwd.getPassword());//returnchar[]//if(name.equalsIgnoreCase("admin")&&password.equals("123456"))if(isPass(name,password)){//newPaintApp(name);JOptionPane.showMessageDialog(this,"-^_^-OK...");//此处可以加上其他的登陆成功后进一步处理的窗口this.dispose();}else{JOptionPane.showMessageDialog(this,"userNameorpasswordisincorrect!");username.setText("");pwd.setText("");ver.setText("");answer=Verification.verification();img.setIcon(newImageIcon(answer.getBufferedImage()));result.setIcon(null);}}//验证用户输入的账户名和密码是否正确(通过与加载进来的账户pro比对)publicbooleanisPass(Stringname,Stringpassword){Enumerationen=pro.propertyNames();while(en.hasMoreElements()){StringcurName=(String)en.nextElement();//System.out.println(curName+"---"+pro.getProperty(curName));if(curName.equalsIgnoreCase(name)){if(password.equalsIgnoreCase(pro.getProperty(curName))){returntrue;}}}returnfalse;}publicstaticvoidmain(String[]args){newLogin();}}

账户注册类

packageccnu.paint;importjava.awt.GridLayout;importjava.awt.Point;importjava.awt.event.ActionEvent;importjava.awt.event.ActionListener;importjava.io.File;importjava.io.FileInputStream;importjava.io.FileOutputStream;importjava.io.IOException;importjava.util.Enumeration;importjava.util.Properties;importjavax.swing.JButton;importjavax.swing.JFrame;importjavax.swing.JLabel;importjavax.swing.JOptionPane;importjavax.swing.JPanel;importjavax.swing.JPasswordField;importjavax.swing.JTextField;publicclassSignUpextendsJFrame{privatestaticfinallongserialVersionUID=3054293481122038909L;privatePropertiespro=newProperties();//最好时静态的,因为账户是共享的privateJPanelpanel=newJPanel();privateJLabellabel=newJLabel("username:");privateJTextFieldfield=newJTextField(15);privateJPanelpanel2=newJPanel();privateJLabellabel2=newJLabel("password:");privateJPasswordFieldfield2=newJPasswordField(15);privateJPanelpanel3=newJPanel();privateJLabellabel3=newJLabel("confirmation:");privateJPasswordFieldfield3=newJPasswordField(15);privateJPanelpanel4=newJPanel();privateJButtonbutton=newJButton("OK");privateJButtonbutton2=newJButton("Cancel");publicvoidinitListener(){field.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){field2.grabFocus();}});field2.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){field3.grabFocus();}});field3.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){ok_actionPerformed(e);}});//OKbutton.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){ok_actionPerformed(e);}});//Cancelbutton2.addActionListener(newActionListener(){@OverridepublicvoidactionPerformed(ActionEvente){cancel_actionPerformed(e);}});}publicvoidok_actionPerformed(ActionEvente){StringuserName=field.getText();Stringpassword=newString(field2.getPassword());Stringpassword2=newString(field3.getPassword());if(userName.equals("")){JOptionPane.showMessageDialog(SignUp.this,"usernamecannotbeempty!");}else{if(password.equalsIgnoreCase("")){JOptionPane.showMessageDialog(SignUp.this,"passwordcannotbeempty!");}else{if(password2.equalsIgnoreCase(password)){if(isExist(userName)){JOptionPane.showMessageDialog(SignUp.this,"usernamehasbeenexisted!");field.setText("");field2.setText("");field3.setText("");}else{pro.setProperty(userName,password);JOptionPane.showMessageDialog(SignUp.this,"SignUpsuccess!");writeToPro(userName,password);//将其写入到账户文件中SignUp.this.dispose();}}else{JOptionPane.showMessageDialog(SignUp.this,"passwordisnotconsistent!");field2.setText("");field3.setText("");}}}}publicvoidcancel_actionPerformed(ActionEvente){System.exit(0);}publicSignUp(){super("Signup");//加载账户文件try{pro.load(newFileInputStream(newFile("src/res/accouts.properties")));}catch(IOExceptione){e.printStackTrace();}//初始化窗口组件的监听initListener();this.setLocation(newPoint(300,230));this.setSize(280,210);this.setLayout(newGridLayout(4,1,0,20));//垂直间隙为20pxpanel.add(label);panel.add(field);panel2.add(label2);panel2.add(field2);panel3.add(label3);panel3.add(field3);panel4.add(button);panel4.add(button2);this.add(panel);this.add(panel2);this.add(panel3);this.add(panel4);this.setAlwaysOnTop(true);this.setResizable(false);this.setVisible(true);}//如果注册始终可用,就要保存起来,否则不需要写入文件中,注册账户本次使用//将账户名与其对应密码保存到指定的账户文件中publicvoidwriteToPro(StringuserName,Stringpassword){pro.setProperty(userName,password);try{pro.store(newFileOutputStream(newFile("src/res/accouts.properties")),"allAccouts");}catch(IOExceptione){e.printStackTrace();}}//判断此用户名是否已经存在publicbooleanisExist(StringuserName){Enumerationenumer=pro.propertyNames();while(enumer.hasMoreElements()){Stringtemp=(String)enumer.nextElement();if(temp.equals(userName)){returntrue;}}returnfalse;}}

生成验证码类

packageccnu.util;importjava.awt.Color;importjava.awt.Font;importjava.awt.Graphics;importjava.awt.Point;importjava.awt.image.BufferedImage;importjava.util.Random;//用于生成验证码publicclassVerification{privatestaticAnsweranswer=newAnswer();privatestaticBufferedImagebufferedImage=null;privatestaticStringresult=null;privatestaticStringwords=null;privatestaticStringwords2=null;//生成验证码publicstaticAnswerverification(){bufferedImage=newBufferedImage(200,35,BufferedImage.TYPE_INT_RGB);Graphicsg=bufferedImage.getGraphics();Randomrand=newRandom();for(inti=0;i<20;i++){Pointp1=newPoint(rand.nextInt(200),rand.nextInt(30));Pointp2=newPoint(rand.nextInt(200),rand.nextInt(30));g.drawLine(p1.x,p1.y,p2.x,p2.y);}g.setColor(Color.RED);g.setFont(newFont("楷体",Font.BOLD,22));intplan=2;switch(rand.nextInt(plan)){case0:plan(g);break;case1:plan1(g);break;default:break;}answer.setBufferedImage(bufferedImage);answer.setResult(result);g.dispose();returnanswer;}//方案一privatestaticvoidplan(Graphicsg){words=ReadTxt.read("/res/words.txt");//指定生成验证码问题的资源文件的路径Randomrand=newRandom();Stringfirst=String.valueOf(words.charAt(rand.nextInt(words.length())));Stringsecond=String.valueOf(words.charAt(rand.nextInt(words.length())));Stringthird=String.valueOf(words.charAt(rand.nextInt(words.length())));g.drawString(first,rand.nextInt(40)+20,rand.nextInt(12)+15);g.drawString(second,rand.nextInt(40)+80,rand.nextInt(12)+15);g.drawString(third,rand.nextInt(40)+140,rand.nextInt(12)+15);result=first+second+third;}//方案二privatestaticvoidplan1(Graphicsg){words2=ReadTxt.read("/res/words2.txt");//指定生成验证码问题的资源文件的路径Randomrand=newRandom();Stringfirst=String.valueOf(words2.charAt(rand.nextInt(words2.length()-2)));Stringsecond=String.valueOf(words2.charAt(rand.nextInt(2)+9));Stringthird=String.valueOf(words2.charAt(rand.nextInt(words2.length()-2)));g.drawString(first,rand.nextInt(30)+20,rand.nextInt(12)+15);g.drawString(second,rand.nextInt(40)+60,rand.nextInt(12)+15);g.drawString(third,rand.nextInt(30)+110,rand.nextInt(12)+15);g.drawString("=",rand.nextInt(40)+150,rand.nextInt(12)+15);if(second.equals("+")){result=String.valueOf(Integer.valueOf(first)+Integer.valueOf(third));}else{result=String.valueOf(Integer.valueOf(first)-Integer.valueOf(third));}}}

读取生成验证码所需文件类

packageccnu.util;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;//专门用于读取文件publicclassReadTxt{publicstaticStringread(Stringpath)//根据指定路径path来读取它,并返回它所包含的内容{StringBuffersb=newStringBuffer();try{BufferedReaderbr=newBufferedReader(newInputStreamReader(Verification.class.getResourceAsStream(path)));Stringtemp=null;while(null!=(temp=br.readLine())){sb.append(temp);}br.close();}catch(IOExceptione){e.printStackTrace();}returnsb.toString();}}

得到生成的验证码所包含的信息类(图案、问题)

packageccnu.util;importjava.awt.image.BufferedImage;//用于将生成的验证码的图案信息以及问题结果封装publicclassAnswer{privateBufferedImagebufferedImage=null;//验证码图像privateStringresult=null;//验证码图像问题的答案publicBufferedImagegetBufferedImage(){returnbufferedImage;}publicvoidsetBufferedImage(BufferedImagebufferedImage){this.bufferedImage=bufferedImage;}publicStringgetResult(){returnresult;}publicvoidsetResult(Stringresult){this.result=result;}}

验证码生成汉字识别的问题的文件words.txt
如: 中国湖北省武汉市汉东大学政法学院

验证码生成算术运算的问题的文件words2.txt
123456789+-

提示图片

java如何实现登录窗口

java如何实现登录窗口

登录效果

java如何实现登录窗口

 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:java如何实现登录窗口的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Java异常的处理方式有哪些下一篇:

6 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18