⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mylistener.java

📁 模仿腾讯QQ的
💻 JAVA
字号:
package com.softfz.jn0708.login;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.ConnectException;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.HashMap;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import com.softfz.jn0708.chat.ChatFrame;
import com.softfz.jn0708.srcpackage.*;
import com.softfz.jn0708.util.Tools;

/**
 *  登录窗体 监听
 * @author admin
 *
 */
public class MyListener implements ActionListener {
	
	private LoginFrame loginFrame;
	private int count=1;
	private int i=1;
	/**
	 * 带参数构造
	 * @param loginFrame 登录框
	 */
	public MyListener(LoginFrame loginFrame) {
		
		this.loginFrame = loginFrame;
	}	
	/**
	 * 无参构造
	 *
	 */
	public MyListener() {		
		
	}
	
	/**
	 * 登录窗体 监听处理事件
	 */
	public void actionPerformed(ActionEvent e) {
		
		Socket clientSocket;//客户socket
		SrcPackage loginPackage = null;//登录包
		SrcPackage validatePackage = null;//验证包
		ObjectInputStream ois = null;//输入流
		ObjectOutputStream oos = null;//输出流		
		Tools tools = new Tools();			
		TUser user = new TUser() ;
		TCompany company =null;
		JButton ADButton = loginFrame.getCenterpanel().getBtnAd();// 设置按钮.			
		String port = loginFrame.getCenterpanel().getJtfPort().getText();
		
			if (e.getActionCommand()=="LOGIN"){	

				count = loginFrame.getLoginCount()+1;
				loginFrame.setLoginCount(count);
				//登录 处理
				System.out.println(count);
				String UNO=loginFrame.getCenterpanel().getJbcQQNum().getSelectedItem().toString().trim();
				
				if (loginFrame.getCenterpanel().getJbcQQNum().getSelectedItem().toString().trim().equals("")){
					
					JOptionPane.showMessageDialog(null,"号码不能为空","提示信息",JOptionPane.WARNING_MESSAGE);
					loginFrame.getCenterpanel().getJbcQQNum().requestFocus();

					
					if (loginFrame.getLoginCount() ==3){
						JOptionPane.showMessageDialog(null,"登录三次失败,即将退出登录!","提示信息",JOptionPane.WARNING_MESSAGE);
						System.exit(0);						
					}
				
				}else if (loginFrame.getCenterpanel().getJtfQQPwd().getText().trim().equals("")){
					
					JOptionPane.showMessageDialog(null,"密码不能为空","提示信息",JOptionPane.WARNING_MESSAGE);
					loginFrame.getCenterpanel().getJtfQQPwd().requestFocus();

					if (loginFrame.getLoginCount() ==3){
						JOptionPane.showMessageDialog(null,"登录三次失败,即将退出登录!","提示信息",JOptionPane.WARNING_MESSAGE);
						System.exit(0);						
					}
				}else {					
					
					if (loginFrame.getCenterpanel().getJcbAutoLogin().isSelected()){			
						tools.properties.setProperty("IsSaveID","Y");
						tools.properties.setProperty("Uno",loginFrame.getCenterpanel().getJbcQQNum().getSelectedItem().toString().trim());
					}else{
						tools.properties.setProperty("IsSaveID","N");
						tools.properties.setProperty("Uno","");
					}		
					
					if (loginFrame.getCenterpanel().getJcblLogin().isSelected()){			
						tools.properties.setProperty("IsSavePwd","Y");
						tools.properties.setProperty("UPwd",loginFrame.getCenterpanel().getJtfQQPwd().getText().toString().trim());
					}else{
						tools.properties.setProperty("IsSavePwd","N");
						tools.properties.setProperty("UPwd","");
					}
					
					tools.saveProperties("");
					
					try {
						
						//连接
						clientSocket = new Socket(loginFrame.getCenterpanel().getJtfIP().getText().trim(),
								Integer.parseInt(loginFrame.getCenterpanel().getJtfPort().getText().trim()));	
						
						if (clientSocket!=null){
							
							oos = new ObjectOutputStream(clientSocket.getOutputStream());
							ois = new ObjectInputStream(clientSocket.getInputStream());							
							// 发登录包
							loginPackage = new SrcPackage();						
							loginPackage.setFrom(loginFrame.getCenterpanel().getJbcQQNum().getSelectedItem().toString().trim());
							loginPackage.setTo(SrcPackage.SERVER_ID);
							loginPackage.setType(SrcPackage.LOGIN_TYPE);
							HashMap data = new HashMap();
							data.put("UNO",UNO);
							data.put("UPWD",loginFrame.getCenterpanel().getJtfQQPwd().getText().trim());
							loginPackage.setData(data);	
							//发送
							oos.writeObject(loginPackage);
							oos.flush();
							//收验证包
							validatePackage = (SrcPackage)ois.readObject();	
							
//							//验证包处理
							if (validatePackage.getType().equals(SrcPackage.VELIDATE_TYPE)){
								
									HashMap map = validatePackage.getData();
									if (map.get("TAG").toString().trim().equals("1")){
										
										JOptionPane.showMessageDialog(null, "用户不存在", "提示",JOptionPane.INFORMATION_MESSAGE);
										
										if (loginFrame.getLoginCount() ==3){
											JOptionPane.showMessageDialog(null,"登录三次失败,即将退出登录!","提示信息",JOptionPane.WARNING_MESSAGE);
											System.exit(0);						
										}
									}else if (map.get("TAG").toString().trim().equals("2")){
										
										JOptionPane.showMessageDialog(null, "登录密码错误", "提示",JOptionPane.INFORMATION_MESSAGE);

										if (loginFrame.getLoginCount() ==3){
											JOptionPane.showMessageDialog(null,"登录三次失败,即将退出登录!","提示信息",JOptionPane.WARNING_MESSAGE);
											System.exit(0);						
										}
									}else if (map.get("TAG").toString().trim().equals("3")){
										
										JOptionPane.showMessageDialog(null, "用户已在线", "提示",JOptionPane.INFORMATION_MESSAGE);
										
										if (loginFrame.getLoginCount() ==3){
											JOptionPane.showMessageDialog(null,"登录三次失败,即将退出登录!","提示信息",JOptionPane.WARNING_MESSAGE);
											System.exit(0);						
										}
									}else if (map.get("TAG").toString().trim().equals("4")){
										
//										if (clientSocket.isClosed()){
											
											user = (TUser)map.get("UINFO");
											company = (TCompany)map.get("COMPANY");
											ChatFrame chatframe  =  new ChatFrame(clientSocket,ois,oos,port,user,company);
											chatframe.show();	
											loginFrame.dispose();
//										}else{
//											System.out.println("服务器已打开");										 
//										}
									}
							}							
							
						}						
						
					} catch (ConnectException e1) {
						 JOptionPane.showMessageDialog(null,"服务器未开启或是由于网络原因使得无法正常连接到服务器!","提示信息",JOptionPane.WARNING_MESSAGE);
						 e1.printStackTrace();
					} catch (NumberFormatException e1) {
						// TODO 自动生成 catch 块
						e1.printStackTrace();
					} catch (UnknownHostException e1) {	
							
						e1.printStackTrace();
					} catch (IOException e1) {
						// TODO 自动生成 catch 块
						e1.printStackTrace();
					} catch (ClassNotFoundException e1) {
						// TODO 自动生成 catch 块
						 e1.printStackTrace();
					}
					
				}
				
				
			}else if (e.getActionCommand()=="AD"){
				System.out.println("AD");					
				if(i==0){					
					loginFrame.setSize(330,252);
					loginFrame.validate();
					ADButton.setText(" 设置↓ ");					
					i=1;
				}else{	
					loginFrame.setSize(330,292);
					loginFrame.validate();
					ADButton.setText(" 设置↑ ");
					i=0;								
				}				
				
			}else if (e.getActionCommand()=="CLOSE"){
				System.out.println("CLOSE");
				System.exit(0);
				
			}			
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -