JAVA仿QQ登录界面

在这里插入图片描述
虽说没有完全还原,但是神似不少,以下是代码:

public class LoginFrame {
Socket socket;
PrintWriter pWriter;
BufferedReader bReader;

RegistrationPanel rp;
 JFrame frame;
JPanel panel;
JButton button_r;
private JTextField textField;
private JPasswordField textField_1;
int mousex,mousey;
/**
 * 账号密码长度满足条件时,变为true
 */
boolean b=false;

String url="https://ssl.zc.qq.com/v3/index-chs.html?from=client&pt_clientver=5575&pt_src=1&regkey"
		+ "=4204DE5322DB44562E9D5E7910D766D681B44BA66BCCD51B39895654916405C2&ADUIN=0&ADSESSION="
		+ "0&ADTAG=CLIENT.QQ.5575_NewAccount_Btn.0&ADPUBNO=26791";




public static void main(String[] args) {
	EventQueue.invokeLater(new Runnable() {
		public void run() {
			try {
				 new LoginFrame();					
			} catch (Exception e) {
				e.printStackTrace();
			}
		}
	});
}


public LoginFrame() {
	frame = new JFrame();
	//隐藏标题栏
	frame.setUndecorated(true);
	//不可改变窗体大小
	frame.setResizable(false);		
	frame.setTitle("神秘社区");
	frame.setIconImage(Toolkit.getDefaultToolkit().getImage("image/应用图标.jpg"));
	frame.setBounds(500, 200, 411, 350);
	frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	frame.setVisible(true);
	
	initialize();
	
	frame.getContentPane().add(panel);
	frame.addMouseListener(new MouseAdapter(){
        public void mousePressed(MouseEvent e) 
        {
            //获取点击鼠标时的坐标
        	mousex= e.getPoint().x;
        	mousey= e.getPoint().y;
        	frame.getContentPane().requestFocusInWindow();
        	button_r.setText(" ▼");
        }
     });      
      frame.addMouseMotionListener(new MouseMotionAdapter(){
          public void mouseDragged(MouseEvent e) 
          {
              frame.setLocation((e.getXOnScreen()-mousex),(e.getYOnScreen()-mousey));//设置拖拽后,窗口的位置
              
             // System.out.println(e.getXOnScreen()+","+mousex+","+e.getYOnScreen()+","+mousey);
          }
      });
      
	int windowWidth = frame.getWidth();//获得窗口宽
	int windowHeight = frame.getHeight();//获得窗口高
	Toolkit kit = Toolkit.getDefaultToolkit();//定义工具包
	Dimension screenSize = kit.getScreenSize();//获取屏幕的尺寸
	int screenWidth = screenSize.width;//获取屏幕的宽
	int screenHeight = screenSize.height;//获取屏幕的高
	frame.setLocation(screenWidth/2-windowWidth/2, screenHeight/2-windowHeight/2);//设置窗口
	
}

/**
 * Initialize the contents of the frame.
 */
private void initialize() {
	panel = new JPanel();
	panel.setBounds(0, 0, 411, 350);
	panel.setLayout(null);
	panel.setBackground(Color.white);
	
	
	JLabel label_1 = new JLabel("");
	label_1.setIcon(new ImageIcon("image/应用图标1.png"));
	label_1.setBounds(0, 0, 37, 51);
	panel.add(label_1);
	
	JLabel label_3 = new JLabel("");
	label_3.setIcon(new ImageIcon("image/神秘社区白色1.png"));
	label_3.setForeground(Color.RED);
	label_3.setBounds(43, 10, 142, 32);
	panel.add(label_3);
	
	JButton btnNewButton_1 = new JButton("");
	btnNewButton_1.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			btnNewButton_1.setBackground(Color.red);
		}
	});
	//背景透明
	btnNewButton_1.setContentAreaFilled(false);
	//边框不显示
	btnNewButton_1.setBorderPainted(false);
	btnNewButton_1.setIcon(new ImageIcon("image/最小化图标11.png"));
	btnNewButton_1.setBounds(348, 0, 37, 32);
	//鼠标悬停时提示信息
	btnNewButton_1.setToolTipText("最小化");
	//焦点框不显示
	btnNewButton_1.setFocusPainted(false);
	btnNewButton_1.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			frame.setExtendedState(JFrame.ICONIFIED);
		}
	});
	btnNewButton_1.addMouseListener(new MouseAdapter() {
		/*@Override
		public void mouseClicked(MouseEvent e) {
			// TODO 自动生成的方法存根
		}
		@Override
		public void mousePressed(MouseEvent e) {
			// TODO 自动生成的方法存根
		}
		@Override
		public void mouseReleased(MouseEvent e) {
			// TODO 自动生成的方法存根
		}*/
		@Override
		public void mouseEntered(MouseEvent e) {
			// TODO 自动生成的方法存根
			btnNewButton_1.setIcon(new ImageIcon("image/最小化图标1.png"));
		}
		@Override
		public void mouseExited(MouseEvent e) {
			// TODO 自动生成的方法存根
			btnNewButton_1.setIcon(new ImageIcon("image/最小化图标11.png"));
			
		}
	});
	panel.add(btnNewButton_1);
	
	JButton button_2 = new JButton("");
	button_2.setContentAreaFilled(false);
	button_2.setBorderPainted(false);
	button_2.setIcon(new ImageIcon("image/关闭图标2.png"));
	button_2.setBounds(378, 0, 37, 32);
	button_2.setToolTipText("关闭");
	button_2.setFocusPainted(false);
	button_2.addActionListener(new ActionListener() {
		public void actionPerformed(ActionEvent e) {
			if(socket!=null){
				try {
					socket.close();
				} catch (IOException e1) {
					// TODO 自动生成的 catch 块
					e1.printStackTrace();
				}
			}
			System.exit(0);
			//frame.dispose();
		}
	});
	button_2.addMouseListener(new MouseAdapter() {
		/*@Override
		public void mouseClicked(MouseEvent e) {
			// TODO 自动生成的方法存根
		}
		@Override
		public void mousePressed(MouseEvent e) {
			// TODO 自动生成的方法存根
		}
		@Override
		public void mouseReleased(MouseEvent e) {
			// TODO 自动生成的方法存根
		}*/
		@Override
		public void mouseEntered(MouseEvent e) {
			// TODO 自动生成的方法存根
			button_2.setIcon(new ImageIcon("image/关闭图标22.png"));
		}
		@Override
		public void mouseExited(MouseEvent e) {
			// TODO 自动生成的方法存根
			button_2.setIcon(new ImageIcon("image/关闭图标2.png"));
		}
	});
	panel.add(button_2);
	
	
	JLabel lblNewLabel_2 = new JLabel();
	lblNewLabel_2.setIcon(new ImageIcon("image/背景g2.gif"));
	lblNewLabel_2.setBounds(0, -5, 433, 155);
	panel.add(lblNewLabel_2);
	
	JLabel lblNewLabel = new JLabel(":");
	lblNewLabel.setBounds(113, 166, 37, 26);
	panel.add(lblNewLabel);
	lblNewLabel.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
	lblNewLabel.setIcon(new ImageIcon("image/登录_用户图标1.jpg"));
	
	JLabel lblNewLabel_1 = new JLabel(":");
	lblNewLabel_1.setBounds(114, 207, 37, 27);
	panel.add(lblNewLabel_1);
	lblNewLabel_1.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
	lblNewLabel_1.setAutoscrolls(true);
	lblNewLabel_1.setIcon(new ImageIcon("image/登录_密码图标2.jpg"));
	
	//神秘号记录列表
	JPopupMenu popupMenu = new JPopupMenu();
	popupMenu.setOpaque(false);
	popupMenu.setBorderPainted(false);
	panel.add(popupMenu);
	
	JMenuItem menuItem_1 = new JMenuItem("1            0         0           0      0     ");
	popupMenu.add(menuItem_1);
	
	JMenuItem menuItem = new JMenuItem("                  ");
	menuItem.setBorderPainted(true);
	menuItem.setContentAreaFilled(false);
	menuItem.setOpaque(true);
	menuItem.setSize(new Dimension(99, 20));
	menuItem.setPreferredSize(new Dimension(40, 22));
	popupMenu.add(menuItem);
	

	
	button_r = new JButton(" ▼");
	button_r.setBounds(271, 166, 24, 26);
	button_r.setFont(new Font("宋体", Font.PLAIN, 15));
	button_r.setContentAreaFilled(false);
	//button_r.setFocusPainted(false);
	button_r.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
	button_r.addActionListener(new ActionListener(){
		@Override
		public void actionPerformed(ActionEvent e) {
			String t=button_r.getText();
			if(t.equals(" ▼")){
				button_r.setText(" ▲");
				popupMenu.show(panel, 111, 192);
			}
			else{
				button_r.setText(" ▼");
				popupMenu.setVisible(false);
			}
			//button_r.requestFocus();
		}
	});
	panel.add(button_r);
			
			
	
	//神秘号输入框
	textField = new JTextField();
	textField.setBounds(149, 165, 122, 27);
	textField.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
	textField.setColumns(10);
	textField.addKeyListener(new KeyListener(){
		@Override
		public void keyTyped(KeyEvent e) {
			//如果输入的不是数字就取消输入
			char ch=e.getKeyChar();
			String t=textField.getText();
			//第一位不能为0
			if(t.equals("")&&ch=='0'){
				e.consume();
			}
			else if((!(ch>='0'&&ch<='9'))||t.length()>9){
				e.consume();
			}
		}

		@Override
		public void keyPressed(KeyEvent e) {
			
		}

		@Override
		public void keyReleased(KeyEvent e) {
			
		}
	});
	textField.addFocusListener(new FocusListener(){
		@Override
		public void focusGained(FocusEvent e) {
			lblNewLabel.setIcon(new ImageIcon("image/登录_用户图标2.jpg"));
			lblNewLabel.setBorder(new MatteBorder(0, 0, 2, 0, Color.BLACK));
			textField.setBorder(new MatteBorder(0, 0, 2, 0, Color.BLACK));
			button_r.setBorder(new MatteBorder(0, 0, 2, 0, Color.black));
		}
		@Override
		public void focusLost(FocusEvent e) {
			lblNewLabel.setIcon(new ImageIcon("image/登录_用户图标1.jpg"));
			lblNewLabel.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
			button_r.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
			textField.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
		}
	});
	panel.add(textField);
	
	
	//密码输入框
	textField_1 = new JPasswordField();
	textField_1.setBounds(151, 208, 140, 26);
	textField_1.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));	
	textField_1.setColumns(10);
	textField_1.addKeyListener(new KeyListener(){
		@Override
		public void keyTyped(KeyEvent e) {
				//
				char[] t=textField_1.getPassword();
				if(t.length>15){
					e.consume();
				}
			}
		@Override
		public void keyPressed(KeyEvent e) {
			
		}

		@Override
		public void keyReleased(KeyEvent e) {
			
		}

	});
	textField_1.addFocusListener(new FocusListener(){
		@Override
		public void focusGained(FocusEvent e) {
			lblNewLabel_1.setIcon(new ImageIcon("image/登录_密码图标3.jpg"));
			lblNewLabel_1.setBorder(new MatteBorder(0, 0, 2, 0, Color.BLACK));
			textField_1.setBorder(new MatteBorder(0, 0, 2, 0, Color.BLACK));
		}
		@Override
		public void focusLost(FocusEvent e) {
			lblNewLabel_1.setIcon(new ImageIcon("image/登录_密码图标2.jpg"));
			lblNewLabel_1.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
			textField_1.setBorder(new MatteBorder(0, 0, 2, 0, Color.gray));
		}
	});
	panel.add(textField_1);
	
	//登录按钮
	JButton btnNewButton = new JButton();	
	btnNewButton.setBorderPainted(false);
	btnNewButton.setContentAreaFilled(false);
	btnNewButton.setRequestFocusEnabled(false);
	btnNewButton.setForeground(Color.WHITE);
	btnNewButton.setIcon(new ImageIcon("image/安全登录1_1.jpg"));
	btnNewButton.setBounds(85, 269, 241, 43);		
	btnNewButton.addMouseListener(new MouseAdapter() {
		@Override
		public void mouseClicked(MouseEvent e) {
			if(b){
				int denglu;
				new Thread(new Runnable() {
					public void run() {
						try {
							//创建套接字,连接服务器
							socket=new Socket("127.0.0.1",7777);
							//创建往套接字中写数据的管道,给服务器发消息,即账号和密码
							pWriter=new PrintWriter(socket.getOutputStream());
							//String login[]={textField.getText(),new String(textField_1.getPassword())};
							//将账号、密码传给服务器
							pWriter.println(textField.getText()+"/"+new String(textField_1.getPassword()));
							pWriter.flush();
							
							//创建从套接字读数据的管道,接受服务器发来的消息,即是否登录成功
							bReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
							String loginTrue=bReader.readLine();
							if(loginTrue.equals("1")){
								new ShenMiFrame();
								//new MainFrame();
								frame.dispose();

// JOptionPane.showMessageDialog(panel,
// “登录成功!”,
// “登录成功”,
// JOptionPane.INFORMATION_MESSAGE,
// new ImageIcon(“image/应用图标1.png”));
}else{
JOptionPane.showMessageDialog(panel,
“账号或密码不正确!”,
“登录失败”,
JOptionPane.INFORMATION_MESSAGE,
new ImageIcon(“image/应用图标1.png”));
}
pWriter.close();
} catch (UnknownHostException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
} catch (IOException e1) {
// TODO 自动生成的 catch 块
e1.printStackTrace();
}
}

				}).start();
					
				/*if(!Login.login(textField.getText(),new String(textField_1.getPassword()))){
					JOptionPane.showMessageDialog(panel,
							"账号或密码不正确!",
							"登录失败", 
							JOptionPane.INFORMATION_MESSAGE, 
							new ImageIcon("image/应用图标1.png"));
				}
				else{
					JOptionPane.showMessageDialog(panel,
							"登录成功!",
							"登录成功", 
							JOptionPane.INFORMATION_MESSAGE, 
							new ImageIcon("image/应用图标1.png"));
				}*/
			}
		}
		@Override
		public void mousePressed(MouseEvent e) {
		}
		@Override
		public void mouseReleased(MouseEvent e) {
		}
		@Override
		public void mouseEntered(MouseEvent e) {
			// TODO 自动生成的方法存根
			btnNewButton.setIcon(new ImageIcon("image/安全登录3.jpg"));
			btnNewButton.setCursor(new Cursor(Cursor.HAND_CURSOR));
			
			String t1=textField.getText();
			String t2=new String(textField_1.getPassword());
			int Num;
			if(t1.length()<5||t2.length()<3){
				btnNewButton.setEnabled(false);
				//刷新界面
				((JPanel) frame.getContentPane()).updateUI();
			}
			else{
				btnNewButton.setEnabled(true);
				((JPanel) frame.getContentPane()).updateUI();
				b=true;
			}
		}
		@Override
		public void mouseExited(MouseEvent e) {
			// TODO 自动生成的方法存根
			btnNewButton.setIcon(new ImageIcon("image/安全登录1_1.jpg"));
			btnNewButton.setCursor(new Cursor(Cursor.DEFAULT_CURSOR));
			btnNewButton.setEnabled(true);
			((JPanel) frame.getContentPane()).updateUI();
		}
	});
	panel.add(btnNewButton);
	
	JLabel label = new JLabel("注册账号");
	label.setBounds(10, 320, 54, 15);
	label.setForeground(Color.gray);
	//设置鼠标悬停时的形状
	label.setCursor(new Cursor(Cursor.HAND_CURSOR));
	rp=new RegistrationPanel(this);
	//设置超链接
	label.addMouseListener(new MouseAdapter() {
		@Override
		public void mouseClicked(MouseEvent e) {
			int clickTimes = e.getClickCount();
            if (clickTimes == 2) {
              try {  
                    Runtime.getRuntime().exec("cmd.exe /c start "+url);  
                    
                } catch (Exception ex) {  
                    ex.printStackTrace();  
                }  
            }
            else{
                //切换注册面板
            	
                frame.getContentPane().remove(panel); 
                ((JPanel) frame.getContentPane()).updateUI();
                frame.getContentPane().add(rp.contentPane);
                label.setForeground(Color.gray);
            } 	
		}
		/*@Override
		public void mousePressed(MouseEvent e) {
			// TODO 自动生成的方法存根
		}
		@Override
		public void mouseReleased(MouseEvent e) {
			// TODO 自动生成的方法存根
		}*/
		@Override
		public void mouseEntered(MouseEvent e) {
			// TODO 自动生成的方法存根
			label.setForeground(Color.black);
		}
		@Override
		public void mouseExited(MouseEvent e) {
			// TODO 自动生成的方法存根
			label.setForeground(Color.gray);
		}
	});
	panel.add(label);
	
	JLabel label_2 = new JLabel("找回密码");
	label_2.setBounds(350, 320, 54, 15);
	//灰色字体
	label_2.setForeground(Color.gray);
	//设置鼠标悬停时的形状
	label_2.setCursor(new Cursor(Cursor.HAND_CURSOR));
	//设置鼠标悬停时字体变化
	label_2.addMouseListener(new MouseAdapter() {
		@Override
		public void mouseClicked(MouseEvent e) {
			label.setForeground(Color.gray);
		}
		@Override
		public void mousePressed(MouseEvent e) {
			// TODO 自动生成的方法存根
		}
		@Override
		public void mouseReleased(MouseEvent e) {
			// TODO 自动生成的方法存根
		}
		@Override
		public void mouseEntered(MouseEvent e) {
			// TODO 自动生成的方法存根
			label_2.setForeground(Color.black);
		}
		@Override
		public void mouseExited(MouseEvent e) {
			// TODO 自动生成的方法存根
			label_2.setForeground(Color.gray);
		}
	});
	panel.add(label_2);
	
	JCheckBox checkBox = new JCheckBox("记住账号");
	checkBox.setBackground(Color.WHITE);
	checkBox.setBounds(213, 240, 80, 23);
	//焦点框不显示
	checkBox.setFocusPainted(false);
	panel.add(checkBox);
	
	JCheckBox checkBox_1 = new JCheckBox("记住密码");
	checkBox_1.setBackground(Color.WHITE);
	checkBox_1.setBounds(116, 240, 80, 23);
	//焦点框不显示
	checkBox_1.setFocusPainted(false);
	panel.add(checkBox_1);
	
}

}

猜你喜欢

转载自blog.csdn.net/weixin_42486795/article/details/88040688