小言_互联网的博客

GUI图形用户接口编写QQ登录界面

680人阅读  评论(0)

GUI图形用户接口编写QQ登录界面

这个是我们的实训作业,我通过参考课本编写的QQ登录界面。Swing组件的整合使用——QQ登录界面。

QQ登录界面,因此可以使用JFrame容器实现。界面布局可分为5个区域,顶部、中部、底部、左侧、右侧,可以使用BorderLayout来管理布局,每个面板使用JPanel面板组件填充。当用户名和密码输入正确,会跳转登录成功界面。否则会弹出错误提示框。为界面登录按钮和关闭窗口注册监听器,进行事件监听。定义程序启动入口,用于启动Swing程序。

素材我会发到公众号: 回复0028“小白数据共享”

先附上效果图

这里主要分为三个部分:

  1. 创建QQ登陆界面,并添加布局管理器
  2. 创建区域面板类,划分容器区域
  3. 创建并注册监听器
  4. 编写程序入口

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);
	}
  1. 创建区域面板类,划分容器区域
    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;	
	}
	}
  1. 创建并注册监听器
    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, "你输入的账户名或密码不正确,请重新输入!");
			}
		}
		
	}
  1. 编写程序入口
public static void main(String[]args) {
		
		SwingUtilities.invokeLater(QQlogin::initLogin);
	}

转载:https://blog.csdn.net/weixin_46265522/article/details/106875768
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场