java swing 创建一个简单的QQ界面教程

记录自己用java swing做的第一个简易界面。

LoginAction.java

package com.QQUI0819;

import javax.swing.*;
import java.awt.event.*;
//首先,编写按钮癿监听器实现类
public class LoginAction implements
  ActionListener {
 private int count=0;
 //当前为null,创建后指向界面输入框
 private JTextField ulName;
 private JTextField ulpass;
 //创建时,输入界面类中癿输入框
 public LoginAction(JTextField ulName,JTextField ulpass ){
  this.ulName=ulName;
  this.ulpass=ulpass;
 }

 //实现接口中癿方法
 //当劢作发生时,这个方法执行
 public void actionPerformed(ActionEvent e) {
  //点击时,就取得界面输入框癿内容
  //此时癿jtf,指向是界面上那个输入框
  String u=ulName.getText();
  String p=ulName.getText();
  System.out.println("账号输入的是 "+u);
  System.out.println("密码输入的是 "+p)
  if(u.equals("csy123") ||(p.equals("456"))){
   //如果输入正确,弹出新界面
   JFrame jf=new JFrame();
   jf.setTitle("登陆成功");
   jf.setSize(300,400);
   jf.setLocationRelativeTo(null);
   jf.setVisible(true);
  } else {
   //如果输入正确,弹出新界面
   JFrame jf=new JFrame();
   jf.setTitle("登陆失败");
   jf.setSize(300,100);
   JButton b1 = new JButton("登陆失败,账号和密码不匹配");
   jf.add(b1);
   jf.setLocationRelativeTo(null);
   jf.setVisible(true);
  }
 }
}

QQ.java

package com.QQUI0819;

import java.awt.Color;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Font;
import java.awt.Image;
import java.util.ArrayList;

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

public class QQ extends JFrame{

 //用户名
 private JTextField ulName;
 //密码
 private JPasswordField ulPasswd;
 //小容器
 private JLabel j1;
 private JLabel j2;
 private JLabel j3;
 private JLabel j4;
 //小按钮
 private JButton b1;
 //复选框
 private JCheckBox c1;
 private JCheckBox c2;
 /**
 * 初始化QQ登录页面
 * */
 public QQ(){
 //设置登录窗口标题
 this.setTitle("QQ登录");
 //去掉窗口的装饰(边框)
 //采用指定的窗口装饰风格
 this.getRootPane().setWindowDecorationStyle(JRootPane.NONE);
 //窗体组件初始化
 init();
 this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
 //设置布局为绝对定位
 this.setLayout(null);
 this.setBounds(0, 0, 355, 265);
 //设置窗体的图标
 Image img0 = new ImageIcon("E:\\蓝杰培训\\第一周java基础\\basicStudy\\src\\com\\QQUI0819\\QQlogo.jpg").getImage();
 this.setIconImage(img0);
 //窗体大小不能改变
 this.setResizable(false);
 //居中显示
 this.setLocationRelativeTo(null);
 //窗体显示
 this.setVisible(true);
 }
 /**
 * 窗体组件初始化
 * */
 public void init(){
 //创建一个容器,其中的图片大小和setBounds
 Container container = this.getContentPane();
 j1 = new JLabel();
 //设置背景色
 Image img1 = new ImageIcon("E:\\蓝杰培训\\第一周java基础\\basicStudy\\src\\com\\QQUI0819\\QQ.jpg").getImage();
 j1.setIcon(new ImageIcon(img1));
 j1.setBounds(0, 0, 355, 90);
 //qq头像设定
 j2 = new JLabel();
 Image img2 = new ImageIcon("E:\\蓝杰培训\\第一周java基础\\basicStudy\\src\\com\\QQUI0819\\QQlogo.jpg").getImage();
 j2.setIcon(new ImageIcon(img2));
 j2.setBounds(20, 100, 60, 63);
 //用户名输入框
 ulName = new JTextField();
 ulName.setBounds(100, 100, 150, 20);
 //注册账号
 j3 = new JLabel("注册账号");
 j3.setBounds(260, 100, 70, 20);
 //密码输入框
 ulPasswd = new JPasswordField();
 ulPasswd.setBounds(100, 130, 150, 20);
 //找回密码
 j4= new JLabel("找回密码");
 j4.setBounds(260, 130, 70, 20);
 //记住密码
 c1 = new JCheckBox("记住密码");
 c1.setBounds(105, 155, 80, 15);
 //自动登陆
 c2 = new JCheckBox("自动登陆");
 c2.setBounds(185, 155, 80, 15);
 //登陆按钮
 b1 = new JButton("登录");
 //设置字体和颜色和手形指针
 b1.setFont(new Font("宋体", Font.PLAIN, 12));
 b1.setForeground(Color.black);
 b1.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR));
 b1.setBounds(20, 200, 300, 20);
 //给按钮添加
 //所有组件用容器装载
 this.add(j1);
 this.add(j2);
 this.add(j3);
 this.add(j4);
 this.add(c1);
 this.add(c2);
 this.add(b1);
 //创建监听器对象,幵加给按钮
 LoginAction lo=new LoginAction(ulName,ulPasswd);
 b1.addActionListener(lo);

 container.add(j1);
 container.add(ulName);
 container.add(ulPasswd);
 }
 public static void main(String[] args) {
 new QQ();
 }
}

效果图

素材

logo:

QQ logo:

补充知识:创建一个简单的Java Swing登入窗口

连接数据图就不弄了,要连接数据库的自行添加

为了方便排版,Layout用SpringLayout类型

1.账号框采用JTextField 类型

2.密码框采用JPasswordField类型

两者的区别是:

JPasswordField显示的文本是这样的:

文本框JTextField显示的文本是这样的:

3.建立两个JButton,一个是“登入”按钮,另一个是“重置”按钮

4.建立两个Checkbox:一个是记住密码,另一个是隐身登入

5.最后一步加入背景图

代码:

package l;

import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Container;
import java.awt.EventQueue;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;
import javax.swing.SpringLayout;
import javax.swing.JLabel;
import java.awt.Font;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import javax.swing.JLayeredPane;
import java.awt.Checkbox;

public class Login extends JFrame {

  private JPanel contentPane;
  private JTextField textField;
  private JPasswordField passwordField;
  public static void main(String[] args) {
    EventQueue.invokeLater(new Runnable() {
      public void run() {
        try {
          Login frame = new Login();
          frame.setVisible(true);              //窗口可见
          frame.setResizable(false);           //设置登入窗口不能调整大小
          ImageIcon img = new ImageIcon("d:/img.jpg");//这是背景图片
           JLabel imgLabel = new JLabel(img);//将背景图放在标签里。
           frame.getLayeredPane().add(imgLabel, new Integer(Integer.MIN_VALUE));
           imgLabel.setBounds(0,0,img.getIconWidth(), img.getIconHeight());
            Container cp=frame.getContentPane();
            ((JPanel)cp).setOpaque(false);
        } catch (Exception e) {
          e.printStackTrace();
        }
      }
    });
  }

  public Login() {
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    setBounds(100, 100, 450, 300);
    contentPane = new JPanel();
    contentPane.setBorder(new EmptyBorder(5, 5, 5, 5));
    setContentPane(contentPane);
    SpringLayout sl_contentPane = new SpringLayout();
    contentPane.setLayout(sl_contentPane);

    JLabel lblNewLabel = new JLabel("账号:");
    lblNewLabel.setFont(new Font("黑体", Font.PLAIN, 19));
    sl_contentPane.putConstraint(SpringLayout.NORTH, lblNewLabel, 34, SpringLayout.NORTH, contentPane);
    sl_contentPane.putConstraint(SpringLayout.WEST, lblNewLabel, 41, SpringLayout.WEST, contentPane);
    contentPane.add(lblNewLabel);

    JLabel lblNewLabel_1 = new JLabel("密码:");
    lblNewLabel_1.setFont(new Font("黑体", Font.PLAIN, 19));
    sl_contentPane.putConstraint(SpringLayout.NORTH, lblNewLabel_1, 29, SpringLayout.SOUTH, lblNewLabel);
    sl_contentPane.putConstraint(SpringLayout.WEST, lblNewLabel_1, 0, SpringLayout.WEST, lblNewLabel);
    contentPane.add(lblNewLabel_1);

    textField = new JTextField();
    textField.addFocusListener(new FocusAdapter() {
      @Override
      public void focusLost(FocusEvent e) {
        String temp=textField.getText();
        if(temp.equals("")) {
          textField.setForeground(Color.GRAY);               //JTextField提示输入QQ号
          textField.setText("请输入QQ号");
        }
      }

      public void focusGained(FocusEvent e) {
        String temp=textField.getText();
        if(temp.equals("请输入QQ号")) {
          textField.setText("");
        }
      }
    });
    sl_contentPane.putConstraint(SpringLayout.NORTH, textField, 1, SpringLayout.NORTH, lblNewLabel);
    sl_contentPane.putConstraint(SpringLayout.WEST, textField, 52, SpringLayout.EAST, lblNewLabel);
    sl_contentPane.putConstraint(SpringLayout.EAST, textField, 196, SpringLayout.EAST, lblNewLabel);
    contentPane.add(textField);
    textField.setColumns(10);

    passwordField = new JPasswordField();
    sl_contentPane.putConstraint(SpringLayout.NORTH, passwordField, 26, SpringLayout.SOUTH, textField);
    sl_contentPane.putConstraint(SpringLayout.WEST, passwordField, 52, SpringLayout.EAST, lblNewLabel_1);
    sl_contentPane.putConstraint(SpringLayout.SOUTH, passwordField, 48, SpringLayout.SOUTH, textField);
    sl_contentPane.putConstraint(SpringLayout.EAST, passwordField, 201, SpringLayout.EAST, lblNewLabel_1);
    contentPane.add(passwordField);

    JButton btnNewButton = new JButton("登入");
    sl_contentPane.putConstraint(SpringLayout.SOUTH, btnNewButton, 65, SpringLayout.SOUTH, passwordField);
    contentPane.add(btnNewButton);

    JButton button = new JButton("重置");
    sl_contentPane.putConstraint(SpringLayout.NORTH, btnNewButton, 2, SpringLayout.NORTH, button);
    sl_contentPane.putConstraint(SpringLayout.EAST, btnNewButton, -70, SpringLayout.WEST, button);
    sl_contentPane.putConstraint(SpringLayout.NORTH, button, 32, SpringLayout.SOUTH, passwordField);
    sl_contentPane.putConstraint(SpringLayout.WEST, button, 242, SpringLayout.WEST, contentPane);
    button.setFont(new Font("宋体", Font.PLAIN, 19));
    contentPane.add(button);

    Checkbox checkbox = new Checkbox("记住密码");
    sl_contentPane.putConstraint(SpringLayout.WEST, checkbox, 0, SpringLayout.WEST, textField);
    sl_contentPane.putConstraint(SpringLayout.SOUTH, checkbox, -6, SpringLayout.NORTH, btnNewButton);
    contentPane.add(checkbox);

    Checkbox checkbox_1 = new Checkbox("隐身登入");
    sl_contentPane.putConstraint(SpringLayout.WEST, checkbox_1, 35, SpringLayout.EAST, checkbox);
    sl_contentPane.putConstraint(SpringLayout.SOUTH, checkbox_1, 0, SpringLayout.SOUTH, checkbox);
    contentPane.add(checkbox_1);
  }
}

运行截图:

以上这篇java swing 创建一个简单的QQ界面教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • Java实现邮件发送QQ邮箱带附件

    本文实例为大家分享了Java实现邮件发送QQ邮箱带附件的具体代码,供大家参考,具体内容如下 添加依赖 <!-- https://mvnrepository.com/artifact/javax.mail/mail --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId> <version>1.4.7</version>

  • java swing实现QQ账号密码输入框

    本文实例为大家分享了Java swing 仿QQ账号密码输入框,供大家参考,具体内容如下 主要思路是自己定义 AccountPanel 和 PasswordPanel 类,继承JPanel,通过 paintComponent(Graphics g) 方法重绘面板,实现目标样式. 先上效果图 正常显示效果: 鼠标放在控件上时的效果: 腾讯QQ登录界面的账号密码输入部分效果比对: 下面直接给出代码吧 AccountPanel: import java.awt.BasicStroke; import

  • java模仿实现QQ登录界面

    本文实例为大家分享了java模仿实现qq登录界面的具体代码,供大家参考,具体内容如下 这是我模仿QQ2015版界面,实现的基本功能有登陆验证,重置等,当然直接复制代码运行是不一样的,还要注意自己插入自己的图片. 结果截图如下所示: 代码: import java.awt.BorderLayout; import java.awt.Color; import java.awt.FlowLayout; import java.awt.GridLayout; import java.awt.Image

  • Java模拟实现QQ三方登录(单点登录2.0)

    本文实例为大家分享了Java模拟实现QQ三方登录的具体代码,供大家参考,具体内容如下 本次例子模拟这样的情况: 一共有2个spring boot应用: 一个是某公司的web,第二个是QQ服务端. 某公司的应用为127.0.0.1:8082 QQ服务端为127.0.0.1:8081 演示如下: 点击使用QQ登录: 在弹出的界面输入数据点击登录后: 关键代码如下: 某公司web端: MyController.java package cn.it1995.login.controller; impor

  • Java实现QQ第三方登录的示例代码

    前期准备工作 1.云服务器 2.备案的域名 3.本地调试需要修改hosts文件,将域名映射到127.0.0.1 如何修改hosts文件:https://www.jb51.net/diannaojichu/319774.html 申请QQ互联,并成为开发者 申请QQ互联创建应用时需要备案域名,所以建议提前准备备案域名. QQ互联:https://connect.qq.com/index.html 登录后,点击头像,进入认证页面,填写信息,等待审核. 审核通过后创建应用 应用创建通过审核后,就可以使

  • java swing 创建一个简单的QQ界面教程

    记录自己用java swing做的第一个简易界面. LoginAction.java package com.QQUI0819; import javax.swing.*; import java.awt.event.*; //首先,编写按钮癿监听器实现类 public class LoginAction implements ActionListener { private int count=0; //当前为null,创建后指向界面输入框 private JTextField ulName;

  • Java Swing编写一个简单的计算器软件

    目录 实现要求 实现代码: 实现要求 1.使用Java图形界面组件设计软件,界面如图所示. 2.软件能够满足基本的"加.减.乘.除"等运算要求. 3.程序代码清晰,语法规范,结构合理,逻辑正确. 4.编辑菜单中包括"复制和粘贴"两个菜单项,为菜单项编写事件代码. 实现代码: import java.awt.BorderLayout; import java.awt.GridLayout; import java.awt.event.ActionEvent; impo

  • Android中使用Kotlin实现一个简单的登录界面

    Kotlin 是一种在 Java 虚拟机上运行的静态类型编程语言,被称之为 Android 世界的Swift,由 JetBrains 设计开发并开源. Kotlin 可以编译成Java字节码,也可以编译成 JavaScript,方便在没有 JVM 的设备上运行. 在Google I/O 2017中,Google 宣布 Kotlin 成为 Android 官方开发语言. 刚接触Kotlin的第一天,仿照QQ的登录界面,先写一个简单的登录界面,虽然笔者用的不是很熟,还在慢慢摸索,但是Kotlin是真

  • 用Eclipse 创建一个简单的web项目(图文教程)

    Eclipse neon 汉化版 ; 1.右击新建 --> 选择 动态Web项目 2. 填写 项目名 项目位置 ; 选择 Dynamic web module version 和 tomcat version ; 点击完成 即可创建 项目; 2.1:项目名称: 2.2:项目位置: 2.3: Dynamic Web Module Version 和 Tomacat Version 之间有版本上的匹配关系: 匹配关系如下图 3. 创建成功后的项目结构: 4. 在创建好项目结构之后 先查看一下 项目的

  • MyBatis入门实例教程之创建一个简单的程序

    准备: (1) IDEA 2021 (2)Java 1.8 (3)数据库 MySQL 5.7 (SQLyog 或 Navicat) 在 MySQL 中创建数据库 mybatisdemo,编码为 utf8 新建表: USE mybatisdemo CREATE TABLE users( uid INT PRIMARY KEY AUTO_INCREMENT, uname VARCHAR(20) NOT NULL, uage INT NOT NULL ); INSERT INTO users(uid,

  • Python实现一个简单的QQ截图

    目录 前言 一.需求分析 二.截图 三.矩形选择 四.按钮设置 总结 前言   毕设有一部分要用到类似QQ截图的功能,这里记录制作过程.因为后期要添加人工智能的功能,所以用python来写桌面应用. 一.需求分析   可以简单的将过程分为以下三步: 点击按钮或敲击快捷键进入截图模式:在截图模式通过鼠标左键按压/松开选取矩形区域:将矩形区域截图保存到指定目录或者剪贴板. 现在我将从第三步开始一步步向上搜索.编写.验证. 二.截图   通过对“python”和“截图”两个关键字搜索不难发现pytho

  • 如何利用PyQt5制作一个简单的登录界面

    目录 环境配置 额外工具配置 生成UI界面 总结 环境配置 新建python虚拟环境并激活 conda create -n pyqt python=3.8 conda activate py36 安装pyqt5 pip install pyqt5 安装pyqt5-tools pip install pyqt5-tools 在PyCharm中新建一个qtdemo工程,并使用这个新建的python虚拟环境作为工程环境 额外工具配置 依次点击File---Settings---Tools---Exte

  • 如何使用 Dockerfile 创建一个简单容器

    目录 Dockerfile 写一个 Dockerfile 优化 Dockerfile container shell Dockerfile Dockerfile 是用于指导 docker 创建自定义 image 的一系列指令,是用于创建 image 的蓝图. 现在有一个简单的 node 项目( 其中Dockerfile 是后面加的,初始项目没有此文件): 要运行此代码,一般的做法是,先在本机安装 node,然后在项目文件夹中先后运行: npm install 以及: node server.js

  • 亲手教你怎样创建一个简单的mysql数据库

    目录 一.创建数据库 二.创建数据库 什么是数据库?数据库是存放数据的“仓库”,维基百科对此形象地描述为“电子化文件柜”. 什么是数据库管理系统?数据库管理系统是操纵和管理数据库的软件.我现在学习的数据库管理系统是Mysql,它属于关系型数据库管理系统,目前被普遍使用.关系型数据库是由相互联结的二维表格组成的数据库. 学习java到数据库操作章节后发现没有数据库,折腾了1天总算弄好了学习所需要的数据库,感觉好开心. 一.创建数据库 注:已经安装好mysql. windows下运行cmd进入命令窗

  • nodejs入门教程二:创建一个简单应用示例

    本文实例讲述了nodejs创建一个简单应用的方法.分享给大家供大家参考,具体如下: 1.创建 test.js // require 来载入 http 模块 var http = require('http'); /** * 使用 http.createServer() 方法创建服务器,返回 一个对象 * 对象有一个叫做 listen 的方法,并使用 listen 方法绑定 8000 端口. * 函数通过 request, response 参数来接收和响应数据. */ http.createSe

随机推荐