前段时间学习了图形用户界面,博客一直没时间写,现在补上。

一、AWT与Swing

我们知道,java针对GUI设计提供了丰富的类库,而这些类均位于AWT和Swing这两个包中。

AWT(Abstract Window ToolKit 抽象窗口工具包):SUN公司最早推出的一套API,需要调用本地系统方法实现功能,属重量级控件。

Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。

二、AWT继承体系

AWT中组建可分为两个大类,分别为Component和MenuComponent。

MenuComponent:是所有与菜单相关组件的父类;

Component:除菜单外,其它AWT组件的父类,通常被称为组件,根据作用不同分为基本组件和容器组件。

基本组件:诸如按钮、文本框之类的图形界面元素,是可以使用的组件,但是必须依赖容器。

容器组件:是可以存储基本组件和容器组件的组件。

注:图片来源于《Java基础入门》

三、事件监听机制

事件源(组件):事件发生的场所,通常就是产生事件的组件;

监听器(Listener):负责监听事件源上发生的的事件,并对各种事件作出相应处理的对象(对象中包含事件处理器);

事件对象:封装了GUI组件上发生的特定事件(通常就是用户的一次操作);

事件处理器:监听器对象对接收的事件对象进行相应处理的方法。

四、QQ登录界面设计

实现要求:

1、仿QQ登录界面设计;

2、添加背景图片;

3、添加文本框、按钮、复选框等功能组件;

4、实现帐号密码验证;

5,验证成功弹出”欢迎登录“界面,失败提醒”帐号密码错误“。

具体代码如下:

QQ登录主界面设计

package com.Liao.Login0626;public class Login {public static void main(String[] args) {Login log=new Login();log.showFrame();}public void showFrame(){//构造一个窗体javax.swing.JFrame frame=new javax.swing.JFrame();//设置标题frame.setTitle("qq");//设置窗体大小frame.setSize(360, 450);//设置窗体居中frame.setLocationRelativeTo(null);//设置退出方式frame.setDefaultCloseOperation(3);//窗体布局格式(流式布局管理器)java.awt.FlowLayout fl=new java.awt.FlowLayout();frame.setLayout(fl);//添加图片javax.swing.ImageIcon icon=new javax.swing.ImageIcon("D:\\develop\\0.jpg");//添加标签javax.swing.JLabel jla=new javax.swing.JLabel(icon);frame.add(jla);//添加文本框javax.swing.JTextField jta_name1=new javax.swing.JTextField();//设置文本框大小java.awt.Dimension d1=new java.awt.Dimension(200,30);jta_name1.setPreferredSize(d1);//将文本框加至窗口frame.add(jta_name1);//创建按钮javax.swing.JButton bu_register=new javax.swing.JButton("注册帐号");java.awt.Dimension d2=new java.awt.Dimension(100,30);bu_register.setPreferredSize(d2);frame.add(bu_register);//添加文本框javax.swing.JTextField jta_name2=new javax.swing.JTextField();java.awt.Dimension d3=new java.awt.Dimension(200,30);jta_name2.setPreferredSize(d3);frame.add(jta_name2);//创建按钮javax.swing.JButton bu_sec=new javax.swing.JButton("找回密码");java.awt.Dimension d4=new java.awt.Dimension(100,30);bu_sec.setPreferredSize(d4);frame.add(bu_sec);//记住密码复选框javax.swing.JCheckBox jcb1=new javax.swing.JCheckBox("记住密码");frame.add(jcb1);//找回密码复选框javax.swing.JCheckBox jcb2=new javax.swing.JCheckBox("找回密码");frame.add(jcb2);//创建按钮javax.swing.JButton bu_login=new javax.swing.JButton("登录");java.awt.Dimension d5=new java.awt.Dimension(300,30);bu_login.setPreferredSize(d5);frame.add(bu_login);//设置窗体显示出来frame.setVisible(true);//创建监听器ButtonListener bl=new ButtonListener();//给按钮加监听器bu_login.addActionListener(bl);//将文本框对象及窗口对象传至按钮监听器类bl.setJt1(jta_name1);bl.setJt2(jta_name2);bl.setJt3(frame);}
}

按钮监听器

package com.Liao.Login0626;import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;public class ButtonListener implements ActionListener {private JFrame jf;private JTextField jt1;private JTextField jt2;public void setJt3(JFrame jframe) {jf = jframe;}public void setJt1(JTextField jtext) {jt1 = jtext;}public void setJt2(JTextField jtext) {jt2 = jtext;}public void actionPerformed(ActionEvent e) {String name1 = jt1.getText();// 输入的帐号String name2 = jt2.getText();// 输入的密码//创建欢迎窗口对象Welcome wel = new Welcome();//设置QQ登录主界面窗口不可见jf.setVisible(false);//帐号密码正确弹出欢迎窗口,错误弹出确认信息if ("123".equals(name1) && "456".equals(name2)) {wel.show();} else {JOptionPane pane = new JOptionPane();JOptionPane.showMessageDialog(pane, "帐号密码错误");}}
}

欢迎登录窗口界面

package com.Liao.Login0626;import java.awt.Font;import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;public class Welcome {public void show() {JFrame jf = new JFrame("Result");// 设置窗体大小jf.setSize(360, 450);// 设置窗体居中jf.setLocationRelativeTo(null);// 设置退出方式jf.setDefaultCloseOperation(3);JLabel jl = new JLabel("欢迎登录", SwingConstants.CENTER);jl.setFont(new Font("宋体", Font.BOLD, 30));jf.add(jl);jf.setVisible(true);}
}

就这样,一个简单的QQ登录界面就完成了,至于后面其它功能的实现则需要进一步的学习,敬请期待!

java学习之Swing篇(一)——QQ登录界面相关推荐

  1. java的Swing组件模拟qq登录界面

    代码来自传智播客第二版(java)图片可根据自己喜好下载相关图片,建议将图片放到工作空间的目录下面,这样就可以直接获取图片,例如以这个格式"xxx.jpg",xxx图片名,jpg格 ...

  2. java代码完全手写模仿qq登录界面

    这是我模仿QQ2015版界面,实现的基本功能有登陆验证,重置等,当然直接复制代码运行是不一样的,还要注意自己插入自己的图片. 结果截图如下所示: import java.awt.BorderLayou ...

  3. java gui qq_JAVA-GUI练习实例,QQ登录界面

    [实现界面] [分析] 整体用默认的BorderLayout(边界布局),分成上中下,分别用三个JPanel储存: 上:一张图片,用JLabel: 下:三个按钮 JButton 中间:用一个JTabb ...

  4. java如何引入qq登陆,Java Swing仿QQ登录界面 学习之用

    闲来无事将早些时候已实现的QQ登录界面再实现了一遍,纯手工打造(意思是没有用NetBeans.MyEclipse的拖动功能). 源代码如下: package ibees.qq; import java ...

  5. java仿qq登录 界面设计,Java Swing仿QQ登录界面效果

    本文实例为大家分享了Java Swing仿QQ登录界面展示的具体代码,供大家参考,具体内容如下 闲来无事将早些时候已实现的QQ登录界面再实现了一遍,纯手工打造(意思是没有用NetBeans.MyEcl ...

  6. java swing qq_使用java swing实现qq登录界面示例分享

    用Java Swing做的一个QQ登录界面 import java.awt.Container; import java.awt.Image; import java.awt.event.Action ...

  7. QT学习日志(附:简易计算器,qq登录界面,简易绘图板,植物大战僵尸魔改版项目实践)

    目录 写在前面 实训前一天 头文件无法生成 项目栏不见了 不知道如何发布程序 实训第一天(附简易计算器的实现) 自定义命名空间的相关问题 关于隐式调用构造函数的问题 实训第二天(不附地址薄的实现) 关 ...

  8. java gui界面设计qq_Java swing界面开发(仿QQ登录界面)

    首先引入包的概念,包:给代码分类,提高的了代码的可读性,封装后方便管理.在包中类的引入:import 包名.类名;包名需小写,多单词用"."隔开.类名的命名规范:首字母大写其后的每 ...

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

    素材获取可关注微信公众号:开源IT,后台回复 "素材" 免费获取. 上次把QQ界面的主题框架实现了,但是还没有完成最小化,关闭按钮等的功能,这次重新完善了QQ登录界面的功能,本次更 ...

  10. JAVA编写QQ登录界面

    在开始学习JAVA图形界面编程中,老师留的第一个作业就是编写一个QQ登录界面,本来我的JAVA就不怎么会写,所以就在网上找啊找,结果就翻到了某位大佬的博客,参考了许多,附上大佬链接http://wz9 ...

最新文章

  1. yolov3 pytorch错误集合
  2. [Golang学习笔记] 05 程序实体2 作用域访问权限和变量重声明
  3. 业务理解有偏差,产品和开发如何达成共识?
  4. unity 调用 .dll 或 .so时遇到的问题
  5. Shell特殊变量:Shell $0,$#,$*,$@,$?,$$和命令行参数
  6. python的flask实现第三方登录怎么写_Python语言的Flask框架应用程序实现使用QQ账号登录的方法...
  7. 读梁宁《一次失控引发的信任评估---我看胡紫薇事件》
  8. Qt之QLocalSocket
  9. var和function谁先优先执行_js函数和变量的执行顺序【易错】
  10. java中注解操作redis_spring boot —— redis 缓存注解使用教程
  11. 使用HttpClient连接池进行https单双向验证
  12. poj 2195 二分图带权匹配+最小费用最大流
  13. 用matlab编程怎么做,Matlab教程 Matlab入门图文教程
  14. 学习halcon之颜色识别
  15. Pytorch实战宝可梦分类-自定义数据集完成宝可梦分类案例分步解析
  16. Python turtle制作书法作品——《鸟鸣涧》
  17. 7-17 小红帽与大灰狼的故事
  18. hive的distribute by应用
  19. cmd 新增dns_cmd修改DNS,以及DNS大全
  20. 【鸿蒙 HarmonyOS】HarmonyOS 开发环境搭建 ( 下载 | 安装 | 启动 | 支持的设备与开发语言 )

热门文章

  1. mysql锁定某个库_mysql 表锁定,库锁定
  2. 使用log4j失误导致系统假死,记录一下
  3. 第一章:计算机网络概述
  4. TP6使用redis
  5. pycharm中快捷键新建文件,pycharm快捷键
  6. 四面体的表面积_如何求正四面体的体积和表面积?
  7. vim:the damn garbled of vim-devicons from nerdtree
  8. 基于Jtopo的网络拓扑编辑器初探
  9. Google Earth Engine ——Landsat 8 影像集合Collection详细介绍
  10. 2021-01-13事件对象