Swing学习----------QQ登录界面制作(二)
来源:互联网 发布:如何选择理财产品 知乎 编辑:程序博客网 时间:2024/06/11 01:15
上次把QQ界面的主题框架实现了,但是还没有完成最小化,关闭按钮等的功能,这次重新完善了QQ登录界面的功能,本次更新主要有以下几个方面:
1.最小化,关闭窗口功能以及实现这两个图标的鼠标移动事件(类似大多数软件,当把鼠标光标移到这两个图标的区域时,图标会有渐变效果,点击时有点击效果);
2.登录按钮的鼠标响应事件,以及点击时的阴影效果;
3.密码框的明文提示,账号框的明文提示;
4.账号和密码框的鼠标响应事件,以及“注册账号”和“忘记密码”的鼠标响应事件
5.窗体的拖动事件
总的来说,这次的重点就在于实现鼠标事件的监听功能,现在先上效果图:
看了自己录制的gif图,感觉失真程度太大,于是又加了一张静态图来做对比,现在来解析实现方法:
1.最小化和关闭的功能实现:
事先准备三张图片,分别表示鼠标进入该区域,离开该区域和点击该区域的状态,然后实现鼠标点击事件,每次不同的状态就插入不同的图片。这里只贴出这部分的实现代码,后面的相似的就不累赘了:
在这里有几点需要注意:一是在添加最小化,关闭按钮的图标时,在add方法中要设置添加的层数,因为我们看到的界面是一层一层的,如果直接添加的话会被背景图片覆盖,就不能正确显示小图标;二是这里的图标的背景是设置成透明的,所以在界面中的图片是经过PS的处理,具体如何使用PS制作透明背景,百度上很多教程。
2.密码框和账号框的鼠标响应事件,” 注册账号 ”和“ 忘记密码 ”的变色效果:
实现方法也是通过添加对鼠标的监听来给文本框设置不同的边框颜色,和上面最小化功能差不多,就不上代码了。
3.密码框的明文显示:
这里密码框设置的组件是JPassWordField,如果直接用setText方法给它设置提示内容的话,会显示成“ * ”,这样就达不到提示的效果,我们可以看到java源码中提供了setEchoChar方法来实现这个功能,
通过源码知道,可以通过将setEchoChar的参数设置成0就可以实现密码框的明文显示,至于具体字体样式就看个人的爱好了。注意,这个方法不支持int型数值,所以0需要进行强制类型转换成char类型才可以,说到这里,我们可以想到许多注册的页面有提供预览密码的功能,知道了这个功能之后,我们也可以实现一个预览密码的功能。下次有机会再更新来实现这个功能吧......
4.无边框窗口的拖动:
java swing中的窗口都有最大化,最小化,关闭图标以及一个外边框,但是这个是影响美观的,这里把外边框隐藏了,但是随之而来的是窗口的拖动功能也没了。所以需要自己来实现一个拖动功能。主要思路就是:获得鼠标Press时的相对JFrame的坐标,然后在mouseDragged方法中获得那点相对屏幕的坐标,然后用相对屏幕的坐标减去相对JFrame的坐标,最后用setLocation 设置它的位置就OK了。具体代码如下:
这里附上一张拖动窗口的原理图:
好了,这次差不多已经把所有的功能实现原理都写完了,下次将会继续更新QQ主界面的制作以及一些对数据库的操作,如登录,注册,获取联系人列表等功能。
- Swing学习----------QQ登录界面制作(二)
- Swing学习----------QQ登录界面制作(二)
- Swing学习----------QQ登录界面制作(一)
- Swing学习----------QQ登录界面制作(一)
- swing 模仿QQ登录界面
- Java Swing仿QQ登录界面 学习之用
- Qt之QQ登录界面(二)
- 使用Swing制作类似QQ界面|圆角界面
- 使用Swing制作类似QQ界面|圆角界面
- objective-c制作QQ登录界面
- Swing制作类似QQ的自动隐藏界面
- 制作精美的QQ聊天界面和登录界面详解
- swing图形界面(二)QQ框架界面(GridBagLayout设计实例)
- Swing做的QQ登录界面,熟悉一下Swing中的控件
- Java Swing界面制作
- 利用Java制作一个简单的QQ登录界面
- java Swing QQ登陆界面
- Qt之QQ登录界面(一)
- mybatis IncompleteElementException:Could not find result map java.lang.String
- 使用hibernate5.2.10编写hibernate helloworld
- 最长回文子串
- 快速排序(分而治之策略及C语言实现)
- 【bzoj3733】[Pa2013]Iloczyn
- Swing学习----------QQ登录界面制作(二)
- Spring Boot第二弹:Spring Boot热插拔
- 有趣的安全游戏--哈密顿行动(四)突破程序的锁
- Oracle 12c Windows安装、介绍及简单使用(图文)
- Java中的一对一关联关系(二)
- 让js中的函数只有一次有效调用的三种常用方法
- GPUImage学习日记(4)之添加文字水印
- 第2周项目3(1)-体验复杂度之两种排序算法的运行时间
- Delphi常用数据类型