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

📄 login.java

📁 JAVA做的QQ软件,感兴趣的可以看看,收藏依旧
💻 JAVA
字号:

import java.awt.BorderLayout;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JButton;
import java.awt.Toolkit;
import javax.swing.ImageIcon;
import javax.swing.JPasswordField;
import java.awt.event.*;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.InvalidClassException;
import java.io.NotSerializableException;
import java.io.ObjectOutputStream;
import java.net.Socket;
import javax.swing.KeyStroke;
import javax.swing.JComponent;
import javax.swing.UIManager;

//  定义用户登录类Login,生成用户登录界面

public class Login extends JFrame {

	//  声明变量,并赋初值
	
	private JPanel jContentPane = null;
	private JLabel iconLabel1 = null;
	private JLabel backgroundLabel = null;
	private JLabel user_nameLabel = null;
	private JLabel passwordLabel = null;
	private JTextField user_nameTextField = null;
	private JPasswordField jPasswordField = null;
	private JButton loginButton = null;
	private JButton registerButton = null;
	private JButton findpwButton = null;
	static String windowsClassName = "com.sun.java.swing.plaf.windows.WindowsLookAndFeel";

		
	Socket toServer;

	private JTextField getUser_nameTextField() {
		if (user_nameTextField == null) {
			user_nameTextField = new JTextField();
			user_nameTextField.setLocation(new java.awt.Point(103,96));
			user_nameTextField.setToolTipText("");
			user_nameTextField.setSize(new java.awt.Dimension(144,25));
		}
		return user_nameTextField;
	}

	private JPasswordField getJPasswordField() {
		if (jPasswordField == null) {
			jPasswordField = new JPasswordField();
			jPasswordField.setLocation(new java.awt.Point(103,129));
			jPasswordField.setToolTipText("");
			jPasswordField.setSize(new java.awt.Dimension(144,25));
		}
		return jPasswordField;
	}

	private JButton getLoginButton() {
		if (loginButton == null) {
			loginButton = new JButton();
			loginButton.setBackground(new java.awt.Color(226,208,241));
			loginButton.setLocation(new java.awt.Point(255,98));
			loginButton.setSize(new java.awt.Dimension(72,53));
			loginButton.setForeground(new java.awt.Color(0,102,255));
			loginButton.setFont(new java.awt.Font("楷体_GB2312", java.awt.Font.BOLD, 14));
			loginButton.setToolTipText("进入聊天室 (Enter)");
			loginButton.setText("登录");
			loginButton.addActionListener(new LoginListener());			
			loginButton.registerKeyboardAction(new LoginListener(),
			            KeyStroke.getKeyStroke(KeyEvent.VK_ENTER,0),
			            JComponent.WHEN_IN_FOCUSED_WINDOW);
		}
		return loginButton;
	}

	private JButton getRegisterButton() {
		if (registerButton == null) {
			registerButton = new JButton();
			registerButton.setLocation(new java.awt.Point(32,165));
			registerButton.setText("注册新用户");
			registerButton.setBackground(new java.awt.Color(222,232,159));
			registerButton.setFont(new java.awt.Font("細明體", java.awt.Font.BOLD, 12));
			registerButton.setToolTipText("注册新用户");
			registerButton.setSize(new java.awt.Dimension(138,27));
			registerButton.addActionListener(new RegisterListener());
		}
		return registerButton;
	}
	
	private JButton getFindpwButton() {
		if (findpwButton == null) {
			findpwButton = new JButton();
			findpwButton.setText("找回密码");
			findpwButton.setSize(new java.awt.Dimension(138,27));
			findpwButton.setBackground(new java.awt.Color(221,234,159));
			findpwButton.setFont(new java.awt.Font("細明體", java.awt.Font.BOLD, 12));
			findpwButton.setToolTipText("找回密码");
			findpwButton.setIcon(new ImageIcon(getClass().getResource("/pictures/ask.gif")));
			findpwButton.setLocation(new java.awt.Point(189,164));
			findpwButton.addActionListener(new FindPwListener());
		}
		return findpwButton;
	}

	//  定义主函数main()
	
	public static void main(String[] args) 
	{	
		new Login();
	}

	//  定义构造函数

	public Login() 
	{
		super();
		try 
		{
			UIManager.setLookAndFeel(windowsClassName);
	    }
	    catch (Exception exc) 
	    {
	    	System.err.println("Error loading L&F: " + exc);
	   	}
		initialize();
	}

	//  定义初始化函数
 
	private void initialize() {
		this.setSize(366, 245);
		this.setIconImage(Toolkit.getDefaultToolkit().getImage(getClass().getResource("/pictures/logo1.jpg")));
		this.setCursor(new java.awt.Cursor(java.awt.Cursor.DEFAULT_CURSOR));
		this.setResizable(false);
		this.setName("LoginFrame");
		this.setFont(new java.awt.Font("Dialog", java.awt.Font.PLAIN, 12));
		this.setDefaultCloseOperation(javax.swing.JFrame.DISPOSE_ON_CLOSE);
		this.setBackground(new java.awt.Color(204,204,255));
		this.setContentPane(getJContentPane());
		this.setTitle("Fetion用户登录");		
		this.setLocationRelativeTo(null);
		this.setVisible(true);
	}


	private JPanel getJContentPane() {
		if (jContentPane == null) {
			passwordLabel = new JLabel();
			passwordLabel.setText("密  码:");
			passwordLabel.setSize(new java.awt.Dimension(64,24));
			passwordLabel.setFont(new java.awt.Font("黑体", java.awt.Font.BOLD, 14));
			passwordLabel.setForeground(new java.awt.Color(102,0,102));
			passwordLabel.setLocation(new java.awt.Point(33,129));
			user_nameLabel = new JLabel();
			user_nameLabel.setText("用户名:");
			user_nameLabel.setSize(new java.awt.Dimension(65,24));
			user_nameLabel.setFont(new java.awt.Font("黑体", java.awt.Font.BOLD, 14));
			user_nameLabel.setForeground(new java.awt.Color(102,0,51));
			user_nameLabel.setLocation(new java.awt.Point(33,95));
			backgroundLabel = new JLabel();
			backgroundLabel.setEnabled(false);
			backgroundLabel.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(204,204,255),5));
			backgroundLabel.setLocation(new java.awt.Point(11,76));
			backgroundLabel.setSize(new java.awt.Dimension(336,131));
			backgroundLabel.setText("");
			iconLabel1 = new JLabel();
			iconLabel1.setBounds(new java.awt.Rectangle(10,9,336,56));
			iconLabel1.setIcon(new ImageIcon(getClass().getResource("/pictures/rongshuxia.jpg")));
			iconLabel1.setToolTipText("欢迎使用飞信聊天!");
			iconLabel1.setText("");
			jContentPane = new JPanel();
			jContentPane.setLayout(null);
			jContentPane.setBackground(new java.awt.Color(242,231,241));
			jContentPane.setForeground(java.awt.Color.pink);
			jContentPane.add(iconLabel1, null);
			jContentPane.add(backgroundLabel, null);
			jContentPane.add(user_nameLabel, null);
			jContentPane.add(passwordLabel, null);
			jContentPane.add(getUser_nameTextField(), null);
			jContentPane.add(getJPasswordField(), null);
			jContentPane.add(getLoginButton(), null);
			jContentPane.add(getRegisterButton(), null);
			jContentPane.add(getFindpwButton(), null);
		}
		return jContentPane;
	}	
	
	//  用户自定义类和函数
	
	//  定义"登录"按钮监听器

	class LoginListener implements ActionListener
	{
		public void actionPerformed(ActionEvent evt)
		{
			if(evt.getSource() == loginButton)
			{		
				//  msgFromServer用来存储从服务器返回的信息
								
				String msgFromServer = "";				
				
				//  调用CheckInfo()检测用户信息
				
				String msgFromCheck = (String)checkInfo();
				
				//  如果通过检测,则连接服务器,发送套接字给服务器
				
				if(msgFromCheck.compareTo("") == 0)
				{
					//  toServerData用来存储发送到服务器的信息
					TransData toServerData = new TransData();					
					LoginInfo data = (LoginInfo)getUserInfo();
					
					toServerData.flag = TProtocal.LOGIN_INFO;
					toServerData.dataObj = (LoginInfo)data;
					try
					{
						//  创建套接字,连接服务器						
						toServer = new Socket(ServerIP.ADDRESS,ServerIP.PORT);
						
						//  创建输出流,将接受的用户注册信息发送到服务器					
						ObjectOutputStream streamToServer = new ObjectOutputStream(toServer.getOutputStream());																				
						streamToServer.writeObject((TransData)toServerData);
						
						//  创建输入流,接收服务器的返回消息
						BufferedReader streamFromServer = new BufferedReader(new InputStreamReader(toServer.getInputStream()));							
						msgFromServer = (String)streamFromServer.readLine();
												
						//  关闭数据流						
						streamToServer.close();	
						streamFromServer.close();					
										
					}
					catch(InvalidClassException e)
					{
						System.out.println("无效类LoginInfo" + e);						
						return;
					}
					catch(NotSerializableException e)
					{
						System.out.println("对象未序列化" + e);					
						return;
					}
					catch(IOException e)
					{
						System.out.println("传输用户登录信息到服务器失败");
						//e.printStackTrace();
						JOptionPane.showMessageDialog(loginButton,"连接服务器失败!");
						return;
					}					
					
					if(msgFromServer.compareTo("Login")	== 0)
					{
						new Thread(new ChatClient(data.cUserID));
						dispose();					
					}
					else
					{
						try
						{
							toServer.close();	
						}
						catch(IOException e)
						{
							System.out.println("关闭数据流失败!" + e);
						}
						
						if(msgFromServer.compareTo("hasLogin")	== 0)
						{
							user_nameTextField.setText("");
							jPasswordField.setText("");
							JOptionPane.showMessageDialog(loginButton,"此用户已经登录!");								
						}
						if(msgFromServer.compareTo("PwError") == 0)
						{
							jPasswordField.setText("");
							JOptionPane.showMessageDialog(loginButton,"密码错误,请重新输入!");
						}
						if(msgFromServer.compareTo("NotRegister") == 0)
						{
							user_nameTextField.setText("");
							jPasswordField.setText("");
							JOptionPane.showMessageDialog(loginButton,"此用户名尚未注册,请先注册!");							
						}						
					}														
				}
				else
				{
					JOptionPane.showMessageDialog(loginButton,msgFromCheck);					
				}
			}			
		}
	}	
	//  定义"注册"按钮监听器
	
	class RegisterListener implements ActionListener
	{
		public void actionPerformed(ActionEvent evt)
		{
			new Register();
		}
	}
	
	//  定义getUserInfo()函数,用来从登录界面获取输入信息
	
	public LoginInfo getUserInfo()
	{
		LoginInfo temp = new LoginInfo();
		temp.cUserID =  user_nameTextField.getText().trim();
		temp.cPassword =  String.valueOf(jPasswordField.getPassword());
		return temp;
	}
	
	//  定义checkInfo()函数,在客户端对输入的注册信息进行检测
	
	public String checkInfo()
	{
		String msgReturn = "";
		LoginInfo data = (LoginInfo)getUserInfo();
		
		if(data.cUserID.compareTo("") == 0 || data.cPassword.compareTo("") == 0)
		{
			msgReturn = "用户名和密码不能为空!";
		}	
		return msgReturn;
	}	
	
	//  定义"忘记密码"按钮监听器
	
	class FindPwListener implements ActionListener
	{
		public void actionPerformed(ActionEvent evt)
		{
			new PwFinder();   //  启动密码提示界面
		}
	}	
}  

⌨️ 快捷键说明

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