这是我模仿QQ2015版界面,实现的基本功能有登陆验证,重置等,当然直接复制代码运行是不一样的,还要注意自己插入自己的图片。

结果截图如下所示:

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.FlowLayout;
import java.awt.GridLayout;
import java.awt.Image;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

public class QQ2015 extends JFrame implements ActionListener {
JFrame loginFrame;
// 复选框
private JCheckBox jc1;
private JCheckBox jc2;
// 用户名
private JTextField username;
// 密码
private JPasswordField password;
// 错误消息提示
JLabel mes;
// 创建一个HashMap,用以保存帐号和密码
HashMap<String, String> users = new HashMap<String, String>();

// 主函数入口
public static void main(String[] args) {
QQ2015 qq2015 = new QQ2015();
qq2015.showLoginFrame();
}

// 构造方法
public QQ2015() {
users.put("123456", "123456");
users.put("302795036", "123456");
users.put("123", "123456");
}

// 创建登陆界面方法
public void showLoginFrame() {
loginFrame = new JFrame();
// 设置大小,位置,标题
loginFrame.setSize(410, 380);
loginFrame.setTitle("修衡-QQ2015");
loginFrame.setLocationRelativeTo(null);
// 创建边界布局对象
loginFrame.setLayout(new BorderLayout());
JPanel panelTop = new JPanel(new FlowLayout());
JPanel panelCenter = new JPanel(new GridLayout(3, 1));
JPanel panelFooter = new JPanel(new GridLayout(2, 1));
JPanel panelFooter1 = new JPanel(new FlowLayout());
JPanel panelFooter2 = new JPanel(new FlowLayout());
panelFooter.add(panelFooter1);
panelFooter.add(panelFooter2);
JPanel panelLeft = new JPanel(new GridLayout(1, 1));
JPanel panelRight = new JPanel(new GridLayout(3, 1));
loginFrame.add("North", panelTop);
loginFrame.add("Center", panelCenter);
loginFrame.add("South", panelFooter);
loginFrame.add("West", panelLeft);
loginFrame.add("East", panelRight);
(new BorderLayout()).setHgap(50);
// 插入图片
Image im = new ImageIcon("imgs/qq.png").getImage();
im = im.getScaledInstance(-1, 90, DO_NOTHING_ON_CLOSE);
loginFrame.setIconImage(im);
JLabel tl = new JLabel(new ImageIcon("imgs/top.png"));
panelTop.add(tl);
// 可以设置panelTop背景颜色
// panelTop.setBackground(Color.YELLOW);
JLabel ll = new JLabel(new ImageIcon("imgs/left.png"));
panelLeft.add(ll);
// 创建注册账号和找回密码标签
JLabel reg_name = new JLabel(" 注册账号 ");
JLabel find_password = new JLabel(" 找回密码 ");
reg_name.setForeground(Color.BLUE);
find_password.setForeground(Color.BLUE);
// 创建帐号和密码输入框
username = new JTextField(18);
password = new JPasswordField(18);
// 复选框
jc1 = new JCheckBox("记住密码 ");
jc2 = new JCheckBox("自动登录");
JLabel nul1 = new JLabel(" ");
JLabel nul2 = new JLabel(" ");
// 错误消息提示标签
mes = new JLabel();
mes.setForeground(Color.RED);
// 部分布局
JPanel pancener = new JPanel(new FlowLayout());
pancener.add(jc1);
pancener.add(nul1);
pancener.add(jc2);
// 创建登陆,重置按钮
JButton button_reset = new JButton(" 重 置 ");
JButton button_login = new JButton(" 登 陆 ");
button_login.setBackground(Color.pink);
// 窗体大小不能改变
loginFrame.setResizable(false);
// 设置窗体可见
loginFrame.setVisible(true);
// 将文本输入框,按钮,事件监听对象等添加
panelCenter.add(username);
panelCenter.add(password);
panelCenter.add(pancener);
panelRight.add(reg_name);
panelRight.add(find_password);
panelFooter1.add(button_reset);
panelFooter1.add(nul2);
panelFooter1.add(button_login);
panelFooter2.add(mes);
button_reset.addActionListener(this);
button_login.addActionListener(this);
// reg_name.addActionListener(this);
}

public void actionPerformed(ActionEvent e) {
String str = e.getActionCommand();
boolean f = false;
String pw = null;
// 重置事件
if (str.equals(" 重 置 ")) {
username.setText("");
password.setText("");
mes.setText("");
}
// 登录事件
if (str.equals(" 登 陆 ")) {
mes.setText("");
Set<Map.Entry<String, String>> set = users.entrySet();
for (Map.Entry<String, String> me : set) {
if (username.getText().trim().equals(me.getKey())) {
f = true;
pw = me.getValue();
break;
}
}
if (f) {
// if (password.getPassword().equals(pw)) {
if (password.getText().trim().equals(pw)) {
JOptionPane.showMessageDialog(null, "登录成功");
} else {
mes.setText("温馨提示:密码为空或错误,请重新输入!");
}
} else {
mes.setText("温馨提示:帐号为空或错误,请重新输入!");
}
}
}
}

java代码完全手写模仿qq登录界面的更多相关文章

  1. [转]Android:布局实例之模仿QQ登录界面

    Android:布局实例之模仿QQ登录界面 预览图: 准备: 1.找到模仿对象 QQ登陆界面UI下载>>>>> 2.导入工程 3.查看布局结构和使用控件 其对应效果图分布 ...

  2. Android:布局实例之模仿QQ登录界面

    预览图: 准备: 1.找到模仿对象 QQ登陆界面UI下载>>>>> 2.导入工程 3.查看布局结构和使用控件 其对应效果图分布为 4.分析样式选择器 下拉箭头2种样式:点 ...

  3. 使用Java的Frame类编写的QQ登录界面

    public static void main(String[] args) { Frame f = new Frame(); //关闭窗体 f.addWindowListener(new Windo ...

  4. Qt 之 模仿 QQ登陆界面——样式篇

    一.简述 今天晚上花了半天时间从QQ登录界面抠了些图,顺便加了点样式基本上实现了QQ的登陆界面全部效果.虽不说100%相似,那也有99.99%相似了哈O(∩_∩)O. QQ好像从去年开始,登录界面有了 ...

  5. Android:布局实例之模仿京东登录界面

    预览图及布局结构参考: 布局: <?xml version="1.0" encoding="utf-8"?> <RelativeLayout ...

  6. 界面编程模仿篇(QQ登录界面逼真篇)

    写了好多天的爬虫,偷空前前后后用了两天的时间(排除吃饭睡觉)写完了这个QQ登录界面,看起来还凑和着吧,如果是的大神的,莫见笑,纯属业余作品,废话先不多说,截图如下,其中第二幅图片中的红色方框部份有待完 ...

  7. WPF模仿QQ登录按钮

    原文:WPF模仿QQ登录按钮 如下图,第一张是未点击时按钮样式,第二张是鼠标划过时按钮样式. 样式代码: <Style TargetType="{x:Type Button}" ...

  8. java 制作QQ登录界面

    package org.eclipse.wb.swing; import java.awt.BorderLayout;import java.awt.EventQueue; import javax. ...

  9. 三 基于Java动态数组手写队列

    手写队列: package dataStucture2.stackandqueue; import com.lt.datastructure.MaxHeap.Queue; import dataStu ...

随机推荐

  1. 【前端】jQuery的animate在火狐浏览器上不支持backgroundPosition的解决方法

    转载请注明出处:http://www.cnblogs.com/shamoyuu/p/4375678.html jQuery的animate是一个非常好用的东东,但某些动画效果支持得不够好,比如back ...

  2. 高效开发之写demo

    今天花了不少时间排查发现了几个明显的错误,但是相关开发人员就是没发现,自己改了一个流程影响到了其它的.最后解决问题的关键还是通过demo找到问题原因进而解决的. 这让我再次感觉到demo的重要性,以前 ...

  3. Tool:Adobe Photoshop

    ylbtech-Tool-Adobe:Adobe Photoshop 1.返回顶部 1. Adobe Photoshop,简称“PS”,是由Adobe Systems开发和发行的图像处理软件. Pho ...

  4. IJ:Eclipse快捷键大全

    ylbtech-IJ:Eclipse快捷键大全 1.返回顶部 1. Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加 ...

  5. 【转载】Cookie/Session机制详解

    [本文转自]http://blog.csdn.net/fangaoxin/article/details/6952954/ 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话. ...

  6. sshd服务器搭建管理和防止暴力破解

    1.1 Linux服务前期环境准备,搭建一个RHEL7环境 1.2 sshd服务安装-ssh命令使用方法 1.3 sshd服务配置和管理 1.4 防止SSHD服务暴力破解的几种方式 1.1 Linux ...

  7. redis 客户端工具 RedisDesktopManager

    https://redisdesktop.com/download 可以查看到spring+redis  缓存的数据

  8. JS 封装插件

    媒体播放器插件: mediaelement-and-player.js 轮播图插件: swiper.min.js

  9. [读书笔记2]《C语言嵌入式系统编程修炼》

    第3章 屏幕操作   3.1 汉字处理 现在要解决的问题是,嵌入式系统中经常要使用的并非是完整的汉字库,往往只是需要提供数量有限的汉字供必要的显示功能.例如,一个微波炉的LCD上没有必要提供显示&qu ...

  10. 实现grep命令

    #include <stdio.h> #include <string.h> #include <stdlib.h> // grep命令:grep match_pa ...