GUI图形用户接口编写QQ登录界面
这个是我们的实训作业,我通过参考课本编写的QQ登录界面。Swing组件的整合使用——QQ登录界面。
QQ登录界面,因此可以使用JFrame容器实现。界面布局可分为5个区域,顶部、中部、底部、左侧、右侧,可以使用BorderLayout来管理布局,每个面板使用JPanel面板组件填充。当用户名和密码输入正确,会跳转登录成功界面。否则会弹出错误提示框。为界面登录按钮和关闭窗口注册监听器,进行事件监听。定义程序启动入口,用于启动Swing程序。
素材我会发到公众号: 回复0028到 “小白数据共享”
先附上效果图

这里主要分为三个部分:
- 创建QQ登陆界面,并添加布局管理器
- 创建区域面板类,划分容器区域
- 创建并注册监听器
- 编写程序入口
1.创建QQ登陆界面,并添加布局管理器
QQ.login.java
import javax.swing.*;
import java.awt.*;
public class QQ.login {
//1、初始化一个JFrame窗口
private static JFrame jf=new JFrame();
public static void initLogin(){
// 设置窗口尺寸
jf.setSize(426, 300);
// 设置窗口在屏幕显示位置
jf.setLocation(497, 242);
// 设置JFrame窗口边框不显示
jf.setUndecorated(true);
// 禁止改变窗口大小
jf.setResizable(false);
// 2、根据QQ登录界面效果,进行布局分配
BorderLayout border_layout=new BorderLayout();
jf.setLayout(border_layout);
// 2.1、创建并加入顶部面板
JPanel panepagestart=CreatePanel.createPangeStart(jf);
jf.add(panepagestart,BorderLayout.PAGE_START);
// 2.2、创建并加入左侧面板
JPanel paneleft=CreatePanel.createleft();
jf.add(paneleft,BorderLayout.LINE_START);
// 2.3、创建并加入中部面板
JPanel panecenter=CreatePanel.createcenter(jf);
jf.add(panecenter,BorderLayout.CENTER);
// 2.4、创建并加入右侧面板
JPanel paneright =CreatePanel.createright();
jf.add(paneright,BorderLayout.LINE_END);
// 2.5、创建并加入底部面板
JPanel panepageend=CreatePanel.createbottom();
jf.add(panepageend,BorderLayout.PAGE_END);
jf.setVisible(true);
}
- 创建区域面板类,划分容器区域
CreatePanel.java
import javax.swing.*;
import java.awt.*;
public class CreatePanel.login {
private static Loginlistener ll=null;
private static JPanel createPangeStart(JFrame jf){
JPanel pane=new JPanel();
pane.setLayout(null);
pane.setPreferredSize(new Dimension(0,140));
ImageIcon image=new ImageIcon("images/back.jpg");
JLabel jl=new JLabel(image);
jl.setBounds(0,0,426, image.getIconHeight());
JButton btn=new JButton(new ImageIcon("images/close_normal.jpg"));
btn.setBounds(403,0,26,26);
btn.setRolloverIcon(new ImageIcon("images/close_hover.jpg"));
btn.setBorderPainted(false);
btn.addActionListener(e->{
jf.dispose();
});
pane.add(jl);
pane.add(btn);
return pane;
}
private static JPanel createleft(){
JPanel panel=new JPanel();
panel.setLayout(null);
panel.setPreferredSize(new Dimension(130,0));
ImageIcon image=new ImageIcon("images/qq.jpg");
JLabel background=new JLabel(image);
background.setBounds(0, 0, 120, 110);
panel.add(background);
return panel;
}
public static JPanel createcenter(JFrame jf){
JPanel panel=new JPanel();
panel.setLayout(null);
String str[]={"1235685688","556846865","556989509"};
JComboBox<Object> jcoCenter=new JComboBox<Object>(str);
panel.add(jcoCenter);
jcoCenter.setEditable(true);
jcoCenter.setBounds(0, 15, 175, 30);
jcoCenter.setFont(new Font("Calibrl",0,13));
JPasswordField jpaCenter=new JPasswordField();
jpaCenter.setLayout(new FlowLayout(FlowLayout.RIGHT,0,0));
jpaCenter.setBounds(0, 44, 175, 30);
jpaCenter.setPreferredSize(new Dimension(185,25));
panel.add(jpaCenter);
ImageIcon image=new ImageIcon("images/keyboard.jpg");
JButton jbu=new JButton(image);
jbu.setPreferredSize(new Dimension(22,20));
jbu.setBorderPainted(false);
jpaCenter.add(jbu);
JCheckBox jch1=new JCheckBox("记住密码");
jch1.setFocusPainted(false);
jch1.setFont(new Font("宋体",0,12));
jch1.setBounds(0, 85, 80, 20);
panel.add(jch1);
JCheckBox jch2=new JCheckBox("自动登录");
jch2.setFocusPainted(false);
jch2.setFont(new Font("宋体",0,12));
jch2.setBounds(100, 85, 80, 20);
ll=new LoginListener(jcoCenter,jpaCenter,jf);
panel.add(jch2);
return panel;
}
private static JPanel createright(){
JPanel panel=new JPanel();
panel.setLayout(null);
panel.setPreferredSize(new Dimension(100,0));
JLabel regeist=new JLabel("注册账号");
regeist.setForeground(new Color(100,149,238));
regeist.setBounds(0,13,60,30);
regeist.setFont(new Font("宋体",0,12));
JLabel regetpwd=new JLabel("找回密码");
regetpwd.setForeground(new Color(100,149,238));
regetpwd.setBounds(0,43,60,30);
regetpwd.setFont(new Font("宋体",0,12));
panel.add(regetpwd);
panel.add(regeist);
return panel;
}
private static JPanel createbottom(){
JPanel pane=new JPanel();
pane.setPreferredSize(new Dimension(1,51));
pane.setLayout(null);
JButton jb1=new JButton(new ImageIcon("images/single_normal.jpg"));
jb1.setPreferredSize(new Dimension(40,40));
jb1.setFocusPainted(false);
jb1.setRolloverIcon(new ImageIcon("images/single_down.jpg"));
jb1.setBorderPainted(false);
jb1.setContentAreaFilled(false);
jb1.setBounds(0,10,40,40);
jb1.setToolTipText("多账号登录");
ImageIcon img=new ImageIcon("images/login_normal.jpg");
JButton jbu=new JButton("登 录",img);
jbu.addActionListener(ll);
jbu.setFont(new Font("宋体",0,13));
jbu.setBounds(130,0,175,40);
jbu.setHorizontalTextPosition(SwingConstants.CENTER);
jbu.setFocusPainted(false);
jbu.setContentAreaFilled(false);
jbu.setBorderPainted(false);
jbu.setRolloverIcon(new ImageIcon("images/lohin_hover.jpg"));
JButton jbri=new JButton(new ImageIcon("images/right_normal.jpg"));
jbri.setBounds(380,10,40,40);
jbri.setFocusPainted(false);
jbri.setBorderPainted(false);
jbri.setContentAreaFilled(false);
jbri.setRolloverIcon(new ImageIcon("images/right_hover.jpg"));
jbri.setToolTipText("二维码登录");
pane.add(jb1);
pane.add(jbu);
pane.add(jbri);
return pane;
}
}
- 创建并注册监听器
LoginListener.java
import javax.swing.*;
import java.awt.event.*;
import java.awt.*;
public class Loginlistener implements ActionListener{
private JComboBox<Object>jco;
private JPasswordField jpa;
private JFrame jf;
public Loginlistener(JComboBox<Object>jco,JPasswordField jpa,JFrame jf) {
// TODO 自动生成的构造函数存根
super();
this.jco=jco;
this.jpa=jpa;
this.jf=jf;
}
@Override
public void actionPerformed(ActionEvent e) {
// TODO 自动生成的方法存根
String name=(String)jco.getSelectedItem();
String pwd=new String(jpa.getPassword());
if(name.equals("123456896")&& pwd.equals("123")){
jf.dispose();
JFrame jfn=new JFrame();
jfn.setSize(289,687);
jfn.setLocation(800,100);
jfn.setUndecorated(true);
jfn.setResizable(true);
jfn.setVisible(true);
JPanel panel=new JPanel();
panel.setLayout(null);
panel.setPreferredSize(new Dimension(0,140));
ImageIcon img=new ImageIcon("images/qqSuccess.jpg");
JLabel background=new JLabel(img);
background.setBounds(0,0,289,687);
panel.add(background);
JButton out=new JButton(new ImageIcon("images/close2_normal.jpg"));
out.setBounds(265,0,26,26);
out.setRolloverIcon(new ImageIcon("images/close2_hover.jpg"));
out.setBorderPainted(false);
panel.add(out);
jfn.add(panel);
out.addActionListener(event->jfn.dispose());
}else{
JOptionPane.showMessageDialog(null, "你输入的账户名或密码不正确,请重新输入!");
}
}
}
- 编写程序入口
public static void main(String[]args) {
SwingUtilities.invokeLater(QQlogin::initLogin);
}
转载:https://blog.csdn.net/weixin_46265522/article/details/106875768
查看评论