Swing学习----------QQ登录界面制作(二)

article/2025/9/17 2:34:33

素材获取可关注微信公众号:开源IT,后台回复 "素材" 免费获取。

上次把QQ界面的主题框架实现了,但是还没有完成最小化,关闭按钮等的功能,这次重新完善了QQ登录界面的功能,本次更新主要有以下几个方面:

           1.最小化,关闭窗口功能以及实现这两个图标的鼠标移动事件(类似大多数软件,当把鼠标光标移到这两个图标的区域时,图标会有渐变效果,点击时有点击效果);

           2.登录按钮的鼠标响应事件,以及点击时的阴影效果;

           3.密码框的明文提示,账号框的明文提示;

           4.账号和密码框的鼠标响应事件,以及“注册账号”和“忘记密码”的鼠标响应事件

           5.窗体的拖动事件

       总的来说,这次的重点就在于实现鼠标事件的监听功能,现在先上效果图:

   

看了自己录制的gif图,感觉失真程度太大,于是又加了一张静态图来做对比,现在来解析实现方法:

   1.最小化和关闭的功能实现:

          事先准备三张图片,分别表示鼠标进入该区域,离开该区域和点击该区域的状态,然后实现鼠标点击事件,每次不同的状态就插入不同的图片。这里只贴出这部分的实现代码,后面的相似的就不累赘了:

	    /*** 实现点击×退出的时间,注意将×放到面板的上一层*/close_label.setBounds(397, 0, 23, 23);panel_north.add(close_label,0);close_label.addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent e) {ImageIcon icon_close = new ImageIcon("images/closeback_2.gif");close_label.setIcon(icon_close);System.out.println("点击");}public void mouseExited(MouseEvent e) {ImageIcon icon_close = new ImageIcon("images/common.gif");close_label.setIcon(icon_close);System.out.println("不显示");}public void mouseEntered(MouseEvent e) {ImageIcon icon_close = new ImageIcon("images/closeback_1.gif");close_label.setIcon(icon_close);close_label.setToolTipText("关闭窗口");System.out.println("显示");}public void mouseClicked(MouseEvent e){System.out.println("系统退出");System.exit(0);}});/*** 实现点击最小化功能*/min_label.setBounds(371, 0, 23, 23);panel_north.add(min_label,0);min_label.addMouseListener(new MouseAdapter() {public void mousePressed(MouseEvent e) {ImageIcon icon_close = new ImageIcon("images/minback2.gif");min_label.setIcon(icon_close);System.out.println("点击");}public void mouseExited(MouseEvent e) {ImageIcon icon_close = new ImageIcon("images/common.gif");min_label.setIcon(icon_close);System.out.println("不显示");}public void mouseEntered(MouseEvent e) {ImageIcon icon_close = new ImageIcon("images/minback1.gif");min_label.setIcon(icon_close);min_label.setToolTipText("最小化窗口");System.out.println("显示");}public void mouseClicked(MouseEvent e){LoginWindow.this.setExtendedState(JFrame.ICONIFIED);System.out.println("程序最小化");}});


        在这里有几点需要注意:一是在添加最小化,关闭按钮的图标时,在add方法中要设置添加的层数,因为我们看到的界面是一层一层的,如果直接添加的话会被背景图片覆盖,就不能正确显示小图标;二是这里的图标的背景是设置成透明的,所以在界面中的图片是经过PS的处理,具体如何使用PS制作透明背景,百度上很多教程。

    

   2.密码框和账号框的鼠标响应事件,” 注册账号 ”和“ 忘记密码 ”的变色效果:

         实现方法也是通过添加对鼠标的监听来给文本框设置不同的边框颜色,和上面最小化功能差不多,就不上代码了。

   3.密码框的明文显示:

         这里密码框设置的组件是JPassWordField,如果直接用setText方法给它设置提示内容的话,会显示成“ * ”,这样就达不到提示的效果,我们可以看到java源码中提供了setEchoChar方法来实现这个功能,

        通过源码知道,可以通过将setEchoChar的参数设置成0就可以实现密码框的明文显示,至于具体字体样式就看个人的爱好了。注意,这个方法不支持int型数值,所以0需要进行强制类型转换成char类型才可以,说到这里,我们可以想到许多注册的页面有提供预览密码的功能,知道了这个功能之后,我们也可以实现一个预览密码的功能。下次有机会再更新来实现这个功能吧......

   4.无边框窗口的拖动:

         java swing中的窗口都有最大化,最小化,关闭图标以及一个外边框,但是这个是影响美观的,这里把外边框隐藏了,但是随之而来的是窗口的拖动功能也没了。所以需要自己来实现一个拖动功能。主要思路就是:获得鼠标Press时的相对JFrame的坐标,然后在mouseDragged方法中获得那点相对屏幕的坐标,然后用相对屏幕的坐标减去相对JFrame的坐标,最后用setLocation 设置它的位置就OK了。具体代码如下:

                 /*** 实现拖拽窗口的功能*/this.addMouseListener(new MouseAdapter(){public void mousePressed(MouseEvent e) {xOld = e.getX();   //记录鼠标按下时的坐标yOld = e.getY();}public void mouseClicked(MouseEvent e){MainFrame.this.setExtendedState(JFrame.ICONIFIED);}});this.addMouseMotionListener(new MouseAdapter() {public void mouseDragged(MouseEvent e) {int xOnScreen = e.getXOnScreen();int yOnScreen = e.getYOnScreen();int xNew = xOnScreen - xOld;int yNew = yOnScreen - yOld;System.out.println("xx="+xNew+"yy="+yNew);MainFrame.this.setLocation(xNew, yNew);  //设置拖拽后,窗口的位置System.out.println("QQ正在移动");}});

   这里附上一张拖动窗口的原理图:

        好了,这次差不多已经把所有的功能实现原理都写完了,下次将会继续更新QQ主界面的制作以及一些对数据库的操作,如登录,注册,获取联系人列表等功能。


http://chatgpt.dhexx.cn/article/dfyqn9Ly.shtml

相关文章

蠕虫病毒与一般计算机病毒的区别,蠕虫和病毒的区别是什么啊!

jhello05-26 08:07 等级 3楼 顶 ls 感染Nimda蠕虫病毒 cxhioulover05-26 09:54 等级 4楼 蠕虫,也是病毒的一种吧,大家习惯性的把具有破坏性的程序统称为病毒,就干脆这样叫了。蠕虫

“机器狗”作者藐视法律公开出售病毒

近日,“机器狗”病毒新变种频出,互联网面临一场“狂犬病”考验。最新版本的机器狗病毒入侵成功后,会自动下载大量木马、病毒、恶意软件、插件等,几乎所有安全软件均不能正常使用,大量用户也因此而不得不选择重装系统。” 最近机器狗闹得很猛,中毒后的电脑会下载更多木马,…

彻底清除狗太阳的3721病毒完全手册!

原文地址为: 彻底清除狗太阳的3721病毒完全手册! 我们对Google的爱说不清楚为什么,就是那么执著。我们对3721的憎恨似乎也说不清楚为什么,看起来更执著。Google往我们口袋里塞钱了吗?当然没有。3721抢我们钱包里的钱了吗&#xf…

机器狗新病毒分析

机器狗新病毒分析 我这里有二个样本’ dd.exe dod.exe 通过McAfee的日志我们可以看到 2008-1-2411:56:09 已由访问保护规则禁止 SMILE\Administrator C:\Documents and Settings\Administrator\ 桌面\dod.exe C:\Documents and Settings\Administrator\Local Settings\Te…

变种机器狗木马病毒防范

近期变种机器狗木马病毒猖獗,此病毒采用hook系统的磁盘设备栈来达到穿透目的的,危害极大,可穿透目前技术条件下的任何软件硬件还原!基本无法*还原抵挡。目前已知的所有还原产品,都无法防止这种病毒的穿透感染和传播。 …

机器狗病毒专杀软件

机器狗病毒 name"google_ads_frame" marginwidth"0" marginheight"0" src"http://pagead2.googlesyndication.com/pagead/ads?clientca-pub-5572165936844014&dt1196162201046&lmt1195819918&format336x280_as&outputhtml…

机器狗病毒的工作原理和判断

http://article.pchome.net/content-581031.html 机器狗病毒名字由来和工作原理 机器狗病毒名字的由来 2008年春节前后,一个长相若电子宠物狗的程序潜入互联网闯荡江湖。 这个东东可不是什么桌面电子宠物,有人发现了这个宠物,并运行了它。不久,更多的“机器狗”入侵了网民…

机器狗病毒特征与防治

作者&#xff1a;许本新<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" /> 新近学院机房的老师老是跟我说,他们机房的计算机中毒了,并且穿透了还原精灵(机房为了管理方便都安装的还原精灵),我听说后倒是觉得蛮有意思的,就过去看了…

SQL 学习最强刷题网站!

大家好&#xff0c;我是唐唐。 今天给大家上点干货&#xff0c;推荐一款之前一直在用的SQL刷题网站—牛客的SQL题库。 很多人都知道牛客有面经&#xff0c;但是还不知道有SQL,其实牛客的SQL题目已经有大概500题了&#xff0c;题目内容、产品、讨论区氛围&#xff0c;可以说是国…

Flink学习之flink sql

&#x1f330; 昨天我们学习完Table API后&#xff0c;今天我们继续学SQL&#xff0c;Table API和SQL可以处理SQL语言编写的查询语句&#xff0c;但是这些查询需要嵌入用Java、Scala和python编写的程序中。 hadoop专题: hadoop系列文章.spark专题: spark系列文章.flink专题: F…

SQL语句快速学习

​ 本文来自本福达的《SQL必知必会&#xff08;第5版&#xff09;》的学习总结。 如果之前学习过SQL相关知识&#xff0c;这篇文档将很有用。 开始&#xff1a; SQL语句不区分大小写&#xff0c;因此SELECT与select是相同的。同样&#xff0c;写成Select也没有关系。检索的基…

SQL学习笔记——REGEXP运算符

REGEXP运算符&#xff0c;是正则表达式&#xff08;regular expression&#xff09;的缩写&#xff0c;正则表达式在搜索字符串时非常强大&#xff0c;下面是关于它的应用 1.查找名字中包含field的顾客 select * from customers where last_name like %field% 运用REGEXP运算…

【SQL学习+练习篇】基础训练,适用于初学者(一)

SQL简介 SQL, 全称为Structured Query Language&#xff08;结构化查询语言)。 要讲SQL就绕不开database(数据库), 平时所说的数据库&#xff0c;一般就是指的 Relational database(关系型数据库). 大家知道数据库是用来存储大量数据的一种软件&#xff0c;那么SQL呢是用来操…

SQL学习四、过滤、数据筛选

数据过滤&#xff0c;即按照条件筛选数据&#xff0c;找出符合条件的数据。这可以说是SQL学习和使用时最核心的地方了。 1、使用简单WHERE 子句 WHERE 子句在表名&#xff08;FROM 子句&#xff09;之后给出 比如我们需要在 adjunctlist 中查询 flaw_id 201902的数据的add_t…

SQL学习——窗口函数

1.窗口函数 窗口函数&#xff1a;应用在窗口的函数&#xff0c;限定一个空间范围 窗口&#xff1a;记录集合&#xff0c;满足某种条件的记录集合上执行的特殊函数 基本用法&#xff1a; 函数名&#xff08;[expr]&#xff09; over 子句 函数&#xff08;&#xff09; over(…

数据分析初学入门——22本SQL学习书籍推荐

很多数据分析初学者都被推荐学SQL&#xff0c;SQL是最基础且是必备的技能之一&#xff0c;但是不知道该从何学起&#xff0c;很多课程讲了很多知识点&#xff0c;但是初学的朋友没有对这一领域整体框架的认识&#xff0c;不知道该学哪些知识、有哪些知识、实际工作需要到什么程…

Sql学习

Sql学习 一、SQL简介 SQL 是一种 ANSI&#xff08;American National Standards Institute 美国国家标准化组织&#xff09;标准的计算机语言。 是结构化查询语言&#xff08;Structured Query Language&#xff09;&#xff0c;可以访问和处理数据库&#xff0c;SQL 对大小写…

SQL学习笔记1

* 以下内容是我在学习SQL&#xff08;http://www.w3school.com.cn/sql/index.asp&#xff09;的时候的学习笔记 * 学习时使用的数据库软件是MySQL数据库可视化工具SQLyogEnt * 如果大家有发现什么不对的地方请告诉我。谢啦!!☆⌒(*&#xff3e;-゜)v * 在这里需要注意的是&…

史上最全SQL学习指南(教程+实例+练习题)

报告称&#xff0c;未来10年数据细分岗位将扩张5倍&#xff0c;大数据19w的人才缺口将继续增加。国内外一线互联网公司纷纷开设了数据分析岗位。 数据分析岗位中用的最频繁的工具就是SQL了。不论是满足业务日常取数需求&#xff0c;还是自己做分析&#xff0c;都离不开SQL。 …

SQL入门教程(非常详细)从零基础入门到精通,看完这一篇就够了

导读&#xff1a; SQL语言有40多年的历史&#xff0c;从它被应用至今几乎无处不在。我们消费的每一笔支付记录&#xff0c;收集的每一条用户信息&#xff0c;发出去的每一条消息&#xff0c;都会使用数据库或与其相关的产品来存储&#xff0c;而操纵数据库的语言正是 SQL &…