QQ登录界面制作

实现简单的QQ登录操作(阶段一)

学习了java连接数据库后,便想简单的实现一下QQ登录的操作,但是也想拥有一个好看的界面,于是便打算进行界面设计(个人喜好不同,不喜勿喷)。
因为看起来比较酷,我取了一个比较科幻的名字:虚现时代
效果如下:

首先便是QQ登录界面的设计了,我设计的尺寸为570*470。
具体大小可自我调整。

package qqcreate;

import java.awt.BorderLayout;

import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.SwingUtilities;

public class qq {
	private static JFrame jf = new JFrame();

	public static void initLogin() {
		jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		jf.setSize(570, 470);
		jf.setLocation(497, 242);
		// jf.setUndecorated(true);
		jf.setResizable(true);

		BorderLayout border_layout = new BorderLayout();
		jf.setLayout(border_layout);

		JPanel panel_north = CreatePanel.CreateNorthPanel(jf);
		jf.add(panel_north, BorderLayout.PAGE_START);

		JPanel panel_west = CreatePanel.CreateCenterPanel();
		jf.add(panel_west, BorderLayout.LINE_START);

		JPanel panel_south = CreatePanel.CreateSouthPanel();
		jf.add(panel_south, BorderLayout.PAGE_END);

		jf.setVisible(true);

	}

	public static void main(String[] args) {
		SwingUtilities.invokeLater(qq::initLogin);
	}
}

这是用来初始化的一段代码,定义了一下布局方面,原先最早用的是东西南北中的的布局,但自我感觉不太好,便改用了上中下的布局,控件位置使用的是绝对定位,面板使用较多。

package qqcreate;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.SwingConstants;

public class CreatePanel {
	public static JPanel CreateNorthPanel(JFrame jf) {		//北面布局
		JPanel panel = new JPanel();						//创建一级容器
		panel.setLayout(null);
		panel.setPreferredSize(new Dimension(560, 170));	//定义大小
		
		
		ImageIcon image = new ImageIcon("C:\\Users\\cjlong\\Pictures\\背景上1.1.jpg");
		JLabel background = new JLabel(image);
		background.setBounds(0, 0, 560, 170);				//为一级容器设置背景,使用二级容器进行覆盖

		JLabel jlsign = new JLabel("虚现时代");
		jlsign.setFont(new Font("宋体", 5, 40));
		jlsign.setForeground(Color.GRAY);
		jlsign.setBounds(200, 65, 180, 50);
		background.add(jlsign);							//创建三级容器,目的是创建标题字

		panel.add(background);							//加入控件
		return panel;
	}

	public static JPanel CreateCenterPanel() {		//制作中间布局
		JPanel panel = new JPanel();
		panel.setLayout(null);
		panel.setPreferredSize(new Dimension(560, 200));		//设置大小,图片背景
		ImageIcon image = new ImageIcon("C:\\Users\\cjlong\\Pictures\\背景下1.jpg");
		JLabel background = new JLabel(image);
		background.setBounds(0, 0, 560, 200);			//设置背景的尺寸
		panel.add(background);

		ImageIcon imwest = new ImageIcon("C:\\Users\\cjlong\\Pictures\\头像2.jpg");
		JLabel jwest = new JLabel(imwest);
		jwest.setBounds(20, 20, 130, 130);			//添加一个头像进去(不可变)
		background.add(jwest);

		JLabel latxt1 = new JLabel("账号");
		latxt1.setFont(new Font("", 0, 25));
		latxt1.setForeground(Color.GRAY);
		latxt1.setBounds(180, 30, 50, 30);
		background.add(latxt1);					//添加一个标志字

		String str[] = { "123456789", "987654321", "1314520888" };
		JComboBox<Object> jcocenter = new JComboBox<Object>(str);
		jcocenter.setForeground(Color.GRAY);
		jcocenter.setEditable(true);
		jcocenter.setBounds(240, 30, 270, 30);
		jcocenter.setFont(new Font("Calibri", 0, 35));
		background.add(jcocenter);				//设置文本框,用来填写账号

		JLabel latxt2 = new JLabel("密码");
		latxt2.setFont(new Font("", 0, 25));
		latxt2.setForeground(Color.GRAY);
		latxt2.setBounds(180, 80, 50, 30);
		background.add(latxt2);					//添加一个标志字

		JPasswordField jpaCenter = new JPasswordField();
		jpaCenter.setLayout(new FlowLayout(FlowLayout.RIGHT, 0, 0));
		jpaCenter.setFont(new Font("Calibri", 0, 35));
		jpaCenter.setBounds(240, 80, 270, 30);
		background.add(jpaCenter);						//添加密码框

		JCheckBox jch1 = new JCheckBox("记住密码");
		jch1.setForeground(Color.GRAY);
		jch1.setOpaque(false);
		jch1.setFocusPainted(false);
		jch1.setFont(new Font("宋体", 0, 20));
		jch1.setBounds(170, 125, 120, 30);
		background.add(jch1);							//添加单选框

		JCheckBox jch2 = new JCheckBox("自动登录");
		jch2.setFocusPainted(false);
		jch2.setForeground(Color.GRAY);
		jch2.setOpaque(false);
		jch2.setFont(new Font("宋体", 0, 20));
		jch2.setBounds(290, 125, 120, 30);
		background.add(jch2);							//添加单选框

		JButton forget = new JButton("忘记密码?");
		forget.setContentAreaFilled(false);
		forget.setBorder(null);
		forget.setFont(new Font("宋体", 0, 20));
		forget.setForeground(Color.GRAY);
		forget.setBounds(400, 125, 140, 30);
		background.add(forget);						//一个按钮,可以用来修改密码

		return panel;
	}

	public static JPanel CreateSouthPanel() {		//创建南部布局
		JPanel panel = new JPanel();
		panel.setPreferredSize(new Dimension(560, 100));
		panel.setLayout(null);

		ImageIcon imaa = new ImageIcon("C:\\Users\\cjlong\\Pictures\\下背景3.jpg");
		JLabel jlaa = new JLabel(imaa);
		jlaa.setBounds(0, 0, 560, 100);
		panel.add(jlaa);								//背景安置

		JButton jble = new JButton("注册账号");
		jble.setContentAreaFilled(false);
		jble.setBorder(null);
		jble.setFont(new Font("宋体", 0, 20));
		jble.setForeground(Color.GRAY);
		jble.setBounds(0, 65, 140, 30);				//注册按钮
		jlaa.add(jble);

		ImageIcon image = new ImageIcon("C:\\Users\\cjlong\\Pictures\\登录1.jpg");
		JButton jb = new JButton("  登     录  ", image);
		jb.setFont(new Font("宋体", 0, 20));
		jb.setForeground(Color.GRAY);
		jb.setBounds(180, 10, 200, 50);
		jb.setHorizontalTextPosition(SwingConstants.CENTER);
		jb.setFocusPainted(false);
		jb.setContentAreaFilled(false);
		jb.setBorderPainted(true);
		jlaa.add(jb);							//登录按钮,添加监听器后。可实现登录操作

		JButton jbri = new JButton(new ImageIcon("C:\\Users\\cjlong\\Pictures\\二维码2.jpg"));
		jbri.setBounds(500, 55, 40, 40);
		jbri.setBorder(null);
		jbri.setContentAreaFilled(false);
		jlaa.add(jbri);							//二维码登录,暂时不做打算

		return panel;

	}
}

这些是具体控件的搭建,目前还没有添加监听器和连接数据库,无法进行登录操作。
其次图片均为本地图片,直接复制代码是无法完美复原的,可以自己进行修改图片。
代码可以参考,但最好自己动手实现,期间你会学到很多东西,这些东西都不是简单的复制就能学会的,共勉。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值