首页 > 编程语言 > java swing 创建一个简单的QQ界面教程
2020
10-10

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界面教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持自学编程网。

编程技巧