`
chen6485
  • 浏览: 17971 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类

用Java语言对QQ进行终极山寨---晴儿QQ诞生记之正在登录界面

阅读更多
         今天星期六,呵呵~难得有一天的清闲,那就让我们继续我们的QQ终极逆向吧!前面几章我们已经成功的实现了一个登录界面,登陆界面完成后就是正在登录界面了,上午花了一上午的时间,终于弄出了一种大致的效果出来,还是老规矩,效果图如下:  
         
         正在登录界面我采用了完全绘制的办法直接绘制出圆角矩形JPanel,然后就是添加其中组件,我采用了GroupLayout组布局,实现了把我需要的组件添加到界面上,代码如下:
         
import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.GroupLayout;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.GroupLayout.Alignment;
import com.componentListener.WinEventAdapter;
import com.sun.awt.AWTUtilities;
import com.uiutil.UIUtil;
public class LoginingFrame{
	/**阐述:该文件定义了晴儿QQ即时通软件的正在登录界面
	 * 作者:陈阳(JavaEye博客:http://chen6485.iteye.com/)
	 * 说明:开发环境:MyEclipse6.6 JDK版本:Java(TM)SE Development Kit 6 Update 22
	 */
	public LoginFrame u;
	private static final long serialVersionUID = -3291651336702369751L;
	private JDialog Logining=new JDialog();
	private LoginPanel panel=new LoginPanel();
	private ImageIcon cancel_normal=new ImageIcon(this.getClass().getResource("../image/SysButton/cancel_normal.png"));
	private ImageIcon cancel_rollover=new ImageIcon(this.getClass().getResource("../image/SysButton/cancel_rollover.png"));
	private ImageIcon cancel_press=new ImageIcon(this.getClass().getResource("../image/SysButton/cancel_pressed.png"));
	private ImageIcon pic_login=new ImageIcon(this.getClass().getResource("../image/logining.gif"));//正在登录图片
	private ImageIcon title=new ImageIcon(this.getClass().getResource("../image/title1.png"));//QQ标题
	private ImageIcon top=new ImageIcon(this.getClass().getResource("../image/top.png"));//QQ标题栏
	private Image titleImage=title.getImage();
	private Image topImage=top.getImage();
	private JLabel lab_pic=new JLabel(pic_login);
	private JLabel lab_account=new JLabel();//正在登录的账号标签
	private JLabel lab_welcome=new JLabel("尊敬的晴儿QQ用户,欢迎你回来");//欢迎登录标签
	private JButton cancel=UIUtil.creatButton(cancel_normal, cancel_rollover, cancel_press);
	private WinEventAdapter winMove=new WinEventAdapter(Logining);//注册移动位置监听;
	public LoginingFrame(){
		initComponent();
		init();
	}
	public void init(){
		Logining.setUndecorated(true);
		Logining.setContentPane(panel);
		AWTUtilities.setWindowOpaque(Logining, false);
		Logining.setSize(239,535);
		Logining.setVisible(true);
		Logining.addMouseListener(winMove);
		Logining.addMouseMotionListener(winMove);
		Logining.getRootPane().setDefaultButton(cancel);
	}
	public void initComponent(){
		lab_account.setText(u.name);
		GroupLayout gro=new GroupLayout(panel);//实例化布局方式
		panel.setLayout(gro);
		gro.setAutoCreateGaps(true);
		gro.setAutoCreateContainerGaps(true);
		GroupLayout.SequentialGroup xgroup = gro.createSequentialGroup();
		xgroup.addGroup(gro.createParallelGroup(Alignment.CENTER).addComponent(lab_pic).addComponent(lab_account).addComponent(lab_welcome).addComponent(cancel)); 	
		gro.setHorizontalGroup(xgroup);//添加平行放置的组件
		GroupLayout.SequentialGroup ygroup=gro.createSequentialGroup();
		ygroup.addGroup(gro.createParallelGroup(Alignment.CENTER).addGap(90));
		ygroup.addGroup(gro.createParallelGroup(Alignment.CENTER).addComponent(lab_pic));
		ygroup.addGroup(gro.createParallelGroup(Alignment.CENTER).addComponent(lab_account));
		ygroup.addGroup(gro.createParallelGroup(Alignment.CENTER).addComponent(lab_welcome));
		ygroup.addGroup(gro.createParallelGroup(Alignment.CENTER).addGap(50));
		ygroup.addGroup(gro.createParallelGroup(Alignment.CENTER).addComponent(cancel));
		gro.setVerticalGroup(ygroup);//添加垂直放置的组件
		cancel.addActionListener(new ActionListener(){
			public void actionPerformed(ActionEvent e){
				stopLogin();
			}		
		});
	}
	public void stopLogin(){
		System.exit(0);
	}
	private class LoginPanel extends JPanel{
		private static final long serialVersionUID=-72456689714251903L;
		protected void paintComponent(Graphics g){
			super.paintComponent(g);
			Graphics2D g2 =(Graphics2D)g;
			g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING,RenderingHints.VALUE_ANTIALIAS_ON);//使用抗锯齿
			g2.setColor(new Color(214,238,255));
			g2.fillRoundRect(0,0,Logining.getWidth(),Logining.getHeight(),8,8);//用上面的颜色绘制填充整个JDialog
			g2.setColor(new Color(0,81,149));
			g2.drawRoundRect(0,0, Logining.getWidth()-1, Logining.getHeight()-1, 8,8);//用上面的颜色绘制填充最外层的边缘
			g2.setColor(new Color(158,249,255));
			g2.drawRoundRect(1, 1, Logining.getWidth()-3, Logining.getHeight()-3,8,8);//用上面的颜色绘制填充第二个外边缘
			g2.drawImage(topImage, 1, 1, Logining.getWidth()-2, 27, null);
			g2.drawImage(titleImage,3,4,null);
		}
	} 
}

            通过以上代码,我们基本完成了正在登录界面,正在登录界面完成之后就是聊天软件主界面了,好吧,从下一章开始我们一起开始聊天主界面的完成吧!

     
  • 大小: 28.3 KB
分享到:
评论

相关推荐

    java--QQ java--QQjava--QQjava--QQ

    这个标题似乎是一个重复的字符串,其中“java”和“QQ”交替出现,可能暗示了我们正在处理一个与Java编程语言和QQ(可能是腾讯的即时通讯软件)相关的项目或者讨论。在Java编程中,QQ可能是指一个特定的应用程序接口...

    java语言 山寨版QQ源码

    【标题】:“java语言 山寨版QQ源码”指的是基于Java编程语言实现的一个简易QQ聊天软件的源代码。这个项目通常是为了教学目的而设计,让学习者能够深入理解Java编程语言在网络通信、多线程、图形用户界面(GUI)等...

    Java开发案例-springboot-15-QQ第三方登录-源代码+文档.rar

    Java开发案例-springboot-15-QQ第三方登录-源代码+文档.rar Java开发案例-springboot-15-QQ第三方登录-源代码+文档.rar Java开发案例-springboot-15-QQ第三方登录-源代码+文档.rar Java开发案例-springboot-15-QQ第...

    java版山寨QQ项目源码

    java版山寨QQ项目 里面有四个压缩包 QQ服务器端.rar QQ客户端.rar 改进QQ客户机服务器视频实现.rar Q第三方库.rar 这个java版山寨QQ项目实现的功能有: 1.实现的java视频聊天; 2.集成了Mina框架; 3.服务器管理...

    山寨版QQ--存Java实现!!

    登录功能是任何社交应用的基础,JavaQQ的登录模块可能包含用户身份验证和会话管理。在Java中,可以使用Servlet或Spring MVC框架处理HTTP请求,通过比较用户名和密码与数据库中的记录来验证用户身份。同时,为了保持...

    java 界面--QQ 代码

    Java Swing GUI是Java编程语言中用于创建图形用户界面(GUI)的一个工具包,它是Java Foundation Classes(JFC)的一部分。本项目"java 界面--QQ 代码"旨在高度模仿QQ客户端的用户界面,并实现基本的登录功能。下面...

    java 仿QQ 登录界面

    在Java编程领域,创建一个仿QQ登录界面是一个常见的学习项目,它可以帮助开发者熟悉GUI(图形用户界面)设计和事件处理。下面将详细讲解这个主题的相关知识点。 首先,我们需要理解Java Swing或JavaFX这两个库,...

    QQ设置界面---eclipse

    QQ设置界面在IT行业中是一个常见的用户交互界面,尤其在开发桌面应用时,它扮演着提供个性化设置、账户管理等重要功能的角色。Eclipse是一个广泛使用的Java集成开发环境(IDE),它支持多种插件开发,包括创建这样的...

    qq登录界面,java

    在Java编程中,创建一个类似QQ的登录界面是学习GUI(图形用户界面)设计的一个常见练习。这个项目主要是为了模仿QQ客户端的登录界面,虽然目前的功能仅限于显示界面,没有实现实际的登录逻辑。下面我们将深入探讨...

    Java写QQ2013登录界面

    标题中的"Java写QQ2013登录界面"指的是使用Java编程语言,设计并实现一个模仿QQ2013版本的登录窗口。这个项目对于初学者来说是一个很好的实践机会,因为它涵盖了基础的GUI设计和事件处理。 描述中提到的"布局"是指...

    QQ蜗牛终极版--服务器发包工具

    QQ蜗牛终极版--服务器发包工具D人必备

    JAVA-QQ-chat-system-instructions.rar_QQ_QQ java_java qq

    【标题】"JAVA-QQ-chat-system-instructions.rar" 提供了一个使用Java编程语言构建QQ聊天系统的详细指南。这个教程可能是为了帮助开发者理解如何利用Java技术实现一个类似QQ的即时通讯平台。 【描述】"JAVA QQ chat...

    java实现的山寨版QQ

    【Java实现的山寨版QQ】项目是一个基于Java编程语言开发的即时通讯软件,它旨在模拟腾讯QQ的基本功能,包括用户登录、在线好友列表展示、一对一私聊以及多人聊天室等功能。这个项目对于学习Java GUI设计、网络编程...

    仿QQ登陆界面java程序设计

    在本文中,我们将深入探讨如何使用Java编程语言设计一个仿QQ登录界面的程序。QQ作为中国最流行的即时通讯软件之一,其用户界面设计简洁而直观,因此,学习如何仿制其登录界面对于Java开发者来说是一个很好的实践项目...

    java图形界面之 山寨QQ登陆界面

    在Java编程语言中,开发图形用户界面(GUI)是一项重要的任务,它允许用户与应用程序进行交互。本主题将深入探讨如何使用Java实现一个类似于QQ登录界面的程序。QQ是一款在中国非常流行的即时通讯软件,它的登录界面...

    用java写的QQ登入界面,用C#,

    【标题】"用Java写的QQ登入界面,用C#"揭示了这个项目是关于使用Java编程语言实现QQ登录界面,并可能涉及C#语言的部分组件或功能。这个项目对于初学者来说,是一个很好的实践案例,可以让他们了解如何在实际应用中...

    山寨java版qq

    【标题】"山寨java版qq" 是一个基于Java编程语言开发的简易聊天软件,它旨在模仿QQ的功能,但并非官方版本。这个项目主要是为了学习和实践网络通信、多线程以及用户界面设计等技术。 【描述】这个"山寨版局域网聊天...

    最新java模拟登陆QQ空间【2017-12-22】有效

    1.获取QQ空间qzonetoken值 2.构造p参数加密方式getEncryption(QQ密码,QQ账号[16进制标识],验证码,false); 3.获取g_tk算法更新 4.cookie值p_skey,RK,pt4_token,pt_login_sig,ptdrvs,ptvfsession,skey,superkey,...

    java山寨版qq项目

    【Java山寨版QQ项目】是韩顺平老师为了教学目的设计的一个模拟QQ功能的应用程序,旨在帮助初学者理解和掌握Java编程语言以及相关的软件开发技术。这个项目提供了从基础到进阶的Java编程实践,涵盖了网络通信、多线程...

    Java实习报告——山寨QQ聊天工具设计

    【Java实习报告——山寨QQ聊天工具设计】 这份实习报告详细记录了一个基于Java的简易聊天系统的开发过程,项目名为"My_QQ",旨在模仿QQ的基本功能,包括登录、注册、单人及多人聊天,并且退出应用。这个项目是针对...

Global site tag (gtag.js) - Google Analytics