java山寨qq_java图形界面之 山寨QQ登陆界面
要山寨出QQ登陆界面,首先要对java的图形界面有一定的了解。在jdk1.4之前,图形界面所用到的所有类和接口都在javax.awt之下,在其之后就都在javax.swing里了。
关于图形界面的开发其实就类似于搭积木的过程,我们把所需要的控件一个一个的摆放到窗口里面我们所需要的位置,一个图形界面就算基本完成了。下面我们就拿QQ的登陆界面做一个示范。
首先我们先了解一下图形界面中所用到的一些基本的控件,这些都在Javax.swing内:
JFrame(JApplet)图形中的顶级容器JPanel最灵活的容器JTextField文本输入框JComboBox下拉框类JPasswordField密码输入框JCheckBox复选框,多选框JLabel标签JButton按钮
其次就是布局方式,这关系到我们怎么样把积木摆放到我们想要的位置:
BorderLayout边框布局将容器分为上北下南左西右东中间FlowLayout流式布局类似word文档null空布局,绝对布局控件必须要指定起始坐标和宽度高度
下面我们就来看下实现QQ界面开发的步骤
1.定义一个QQFrame,让该类继承自JFrame。2.在QQFrame类中定义主函数和初始化界面的方法。3.在主函数中实例化QQFrame类的对象,调用初始化界面的方法。4.在初始化界面的方法中,设置窗体的属性值(标题,大小,位置,大小调整,布局,关闭,可见,...)5.设置窗体的背景图(单独定义方法进行设置),这里我们会用到添加图片的方法6.创建容器或者元素控件添加到JFrame上。1.创建北边区域的方法,设置标签2.创建西边区域的方法,创建容器,添加标签显示图片3.创建中间区域的方法,创建容器,添加账号,密码,标签,复选框控件4.创建南边区域的方法,创建容器,添加按钮,标签控件。
7. 5.在主函数中实例化QQFrame类的对象,调用初始化界面的方法。
下面就在代码中说说我所遇到的问题,也请大家留意这些问题不要再犯
//初始化界面方法
public void initUI(){
//标题大小显示位置布局方式。。。
this.setTitle("QQFrame");
this.setSize(371,290);
this.setLocationRelativeTo(null);//让窗口显示位置居屏幕中间
this.setResizable(false);//不可随意调整大小
this.setLayout(new BorderLayout());//设置布局方式尤其要注意默认的布局方式就是框架布局所以这行代码写不写无所谓
this.setDefaultCloseOperation(3);//关闭窗体时退出程序
this.setUndecorated(true);//去掉窗口外面的边框但这时没有了关闭按钮,所以我们还得在界面上添加按钮,点击后可以关闭界面,关闭界面的代码很简单System.exit(0);就是这一行。
//调用添加窗体背景图的方法
addBackGround();
//由于我们采用框架布局,将界面分为东西南北中五块这里是调用添加窗口各个区域的方法
creatNorth();
creatWest();
creatCenter();
creatSouth();
//设置窗口可见
这里要注意的是添加组件时一定要先添加最后再可视,如果先可视再添加,那么很有可能我们看不到添加的组件了。
this.setVisible(true);
}
//有时候我们会想用自己的图片来充当界面的北京下面就介绍添加背景的方法
private void addBackGround(){
我们可能会想将自己的照片设置为窗口背景,那这要怎么样做呢我们需要用到ImageIcon类帮助我们实现
//使用imageicon加载图片但是这样无法直接显示在窗口上
ImageIcon image=new ImageIcon(this.getClass().getResource("haha.JPG"));//得到类得到路径,图片的格式没有要求,
//创建jlabel对象显示图片
JLabel j=new JLabel(image);
//设置标签的显示起始位置和标签限时的宽度高度
j.setBounds(0,0,image.getIconWidth(),image.getIconHeight());
//将j添加到jlayeredpane的Default层上,Default层是最底下的一层,我们在后面给的值是MIN_VALUE最小的值,就是将标签加到了面板的最底层,这里我们必须要加在最底层上,否则显示不出来。
this.getLayeredPane().add(j,new Integer(Integer.MIN_VALUE));
//获取窗体的内容面板对象强制转换成JPanel对象这样我们就取到了LayeredPane面板上一层的ContentPane面板
JPanel contentPane=(JPanel)this.getContentPane();
//将内容面板设置为透明我们才可以看到我们想要的图片
contentPane.setOpaque(false);
}
下面我们以西边区域为例,讲一下每个区域的添加控件的方法
//创建西边区域
private void creatWest(){
//创建一个容器,我们要添加的所有组件都应是放在这个容器里的
JPanel jp=new JPanel();
//设置容器大小,只有窗口的大小要用setSize方法,其余的一律要用这种,因为西边区域的高度是窗口高度减去北边还有南边的高度之和,所以西边区域的高度是被动确定的,在这里些什么数字都无所谓,我们在这里写0。延伸一下,中间区域就是东西南北四个区域设置完剩下的部分,所以中间区域就不用设置大小了。
jp.setPreferredSize(new Dimension(110,0));
//设置容器布局为流式靠右布局
jp.setLayout(new FlowLayout(FlowLayout.RIGHT));
//加载图片
ImageIcon im=new ImageIcon(this.getClass().getResource("real.jpg"));
//创建标签对象
JLabel j=new JLabel(im);
//将标签加入面板中并设置面板为透明
jp.add(j);
jp.setOpaque(false);
//将面板加到西边
this.add(jp,BorderLayout.WEST);
}
其余的区域都和西边和中间区域的添加方法一致,qq界面的所有代码我都放在了附件中,如果有兴趣大家可以看看,当然界面做的还是比较粗糙,不过里面所有的功能都已经实现,比如说链接网页,拖动窗口。后期我还要对界面进行美化。
java山寨qq_java图形界面之 山寨QQ登陆界面相关推荐
- Java第二课:图形界面(实现QQ登陆界面)
最终效果图如下: 第一步:分析界面组成:根据三大布局的特点来确定由几大部分组成,哪些部分要用到JPanel.然后在窗体JFrame上用什么布局组合. 分析如下: 分为三大部分,如图三种不同彩色框(因为 ...
- java版本qq登陆界面_java实现QQ登陆界面
以下是效果截图: 素材: 以下是源代码: import java.awt.*; import java.awt.event.MouseEvent; import java.awt.event.Mous ...
- Java实现QQ登陆界面的搭建
仿QQ登陆界面 界面显示 界面布局 响应事件 仿QQ登陆界面实现 1.界面显示 界面显示的两种方法 创建JFrame对象 import java.awt.Color; import javax.swi ...
- linux qq java_Java实现QQ登陆界面
Java实现QQ登陆界面,以下是效果截图: 素材: 以下是源代码: import java.awt.*; import java.awt.event.MouseEvent; import java.a ...
- Qt 之 模仿 QQ登陆界面——功能篇(一)
一.简述 今天是2017年第一篇技术文章,12月末事情太多,一直没来得及更新博客.今天继 Qt 之 模仿 QQ登陆界面--样式篇 这一篇 来简单地看一下对登录界面做的一些功能,主要是登录用户下拉列表和 ...
- 使用HTML表单和表格完成静态QQ登陆界面
使用HTML表单和表格完成静态QQ登陆界面 一.创建过程 创建表单 创建表格 创建行 创建单元格 创建表单组建 二.原理 使用表单来显示收集用户信息并用表格来帮助排版 三.主要代码 1. <ta ...
- Android studio新手:实现最新版QQ登陆界面
最新版QQ登陆界面如下: 代码实现效果如下: activity_main.xml代码如下: <?xml version="1.0" encoding="utf-8& ...
- Qt(三)--- 实现QQ登陆界面头像状态栏的功能
对于QQ登陆界面,可以通过下拉菜单,实现状态的选择,在QQ的头像状态栏需要显示的信息包括:用户的头像以及登陆的状态.这里主要涉及和利用的只是是QMenu以及QAction,同时继承QLabel的类: ...
- pyqt5登录界面设计——模仿qq登录界面,可登录注册(数据库)
pyqt5登录界面设计--模仿qq登录界面 一.简单易用的可直接登录的界面--账号密码程序写死 1.1.效果图: 1.2.视频效果图 3.代码说明 4.使用示例 5.全部源码见: 二.带数据库的可登录 ...
最新文章
- 在内存只有 24KB 的电脑上写操作系统,是怎样的体验?
- STL算法algorithm,
- linux 设置防火墙ssh,centos 8 ssh命令(服务器设置、防火墙配置等)
- 2007年上半年软件测试_洪恩教育成功登陆纽交所,上市首日大涨超33%!成2020年首家美股上市的中国教育公司...
- 学计算机的用surface,11个高效利用Surface处理工作学习任务的方法 - Surface 使用教程...
- 表格视图,文本视图和Web视图
- 计算机应用无法打开,双击磁盘无法打开?_计算机应用_邹志强个人网站—(www.zouzhiqiang.com)...
- 3-3-ServletContext接口
- 修改服务器的AJP监听地址,实习记录(五) - AJP协议文件读取漏洞
- Linux系统安装三菱编程软件,如何安装三菱plc编程软件gx developer
- Android手机RTMP播放工具(APK,支持秒开)
- BM3D 算法原理详细解析 按过程步骤讲解(附C++实现代码)
- IPS和IDS的区别
- i5和i7哪个适合计算机网络,i5和i7的区别
- 虚拟现实下的手势识别综述
- Android KitKat 外部存储权限分析
- 不懂代码?没关系,照样可以做SaaS软件开发
- 临时文件传输工具推荐
- 巧用url 让seo做起来更轻松
- 不是有效的win32应用程序_什么是模块,VBA各种模块的有效行为
热门文章
- 即兴演讲的“三定”和“四思”、“五借”技巧
- 江苏省教育网计算机二级,江苏省计算机二级考试时间 考试形式
- 德国马牌轮胎助力中国国家男子足球队征战亚洲杯
- 嘻哈说:设计模式之接口隔离原则
- 计算机信息系统集成生产厂家,佛山弱电工程集成计算机信息系统集成工程厂家...
- linux moxa 多串口卡_在FC6 Linux下安装Moxa多串口卡的问题
- windows 版 OneNote去哪下载?
- 在Manjaro中Debtap将deb文件转换成pkg文件后,怎么解压生成的.pkg.tar.xz包?
- pip install安装系列之Pytorch、TorchVision、PyQt、OpenCV、gdcm包安装,Windows远程桌面Ubuntu16.04记录,Linux下安装google浏览器汇总
- OWASP TOP10 及防御手段(附加应用安全设计框架)