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