java学习之Swing篇——QQ登录界面

前段时间学习了图形用户界面,博客一直没时间写,现在补上。

一、AWT与Swing

我们知道,java针对GUI设计提供了丰富的类库,而这些类均位于AWT和Swing这两个包中。

AWT(Abstract Window ToolKit 抽象窗口工具包):SUN公司最早推出的一套API,需要调用本地系统方法实现功能,属重量级控件。

Swing:在AWT的基础上,建立的一套图形界面系统,其中提供了更多的组件,而且完全由Java实现。增强了移植性,属轻量级控件。

二、AWT继承体系

AWT中组建可分为两个大类,分别为Component和MenuComponent。

MenuComponent:是所有与菜单相关组件的父类;

Component:除菜单外,其它AWT组件的父类,通常被称为组件,根据作用不同分为基本组件和容器组件。

基本组件:诸如按钮、文本框之类的图形界面元素,是可以使用的组件,但是必须依赖容器。

容器组件:是可以存储基本组件和容器组件的组件。


    注:图片来源于《Java基础入门》

三、事件监听机制

事件源(组件):事件发生的场所,通常就是产生事件的组件;

监听器(Listener):负责监听事件源上发生的的事件,并对各种事件作出相应处理的对象(对象中包含事件处理器);

事件对象:封装了GUI组件上发生的特定事件(通常就是用户的一次操作);

事件处理器:监听器对象对接收的事件对象进行相应处理的方法。

四、QQ登录界面设计

实现要求:

1、仿QQ登录界面设计;

2、添加背景图片;

3、添加文本框、按钮、复选框等功能组件;

4、实现帐号密码验证;

5,验证成功弹出”欢迎登录“界面,失败提醒”帐号密码错误“。

具体代码如下:

QQ登录主界面设计

package com.Liao.Login0626;

public class Login {

	public static void main(String[] args) {
		Login log=new Login();
		log.showFrame();
	}
	
	public void showFrame(){
		//构造一个窗体
		javax.swing.JFrame frame=new javax.swing.JFrame();
		//设置标题
		frame.setTitle("qq");
		//设置窗体大小
		frame.setSize(360, 450);
		//设置窗体居中
		frame.setLocationRelativeTo(null);
		//设置退出方式
		frame.setDefaultCloseOperation(3);
	
		//窗体布局格式(流式布局管理器)
		java.awt.FlowLayout fl=new java.awt.FlowLayout();
		frame.setLayout(fl);
		
		//添加图片
		javax.swing.ImageIcon icon=new javax.swing.ImageIcon("D:\\develop\\0.jpg");
		//添加标签
		javax.swing.JLabel jla=new javax.swing.JLabel(icon);
		frame.add(jla);
		
		
		//添加文本框
		javax.swing.JTextField jta_name1=new javax.swing.JTextField();
		//设置文本框大小
		java.awt.Dimension d1=new java.awt.Dimension(200,30);
		jta_name1.setPreferredSize(d1);
		//将文本框加至窗口
		frame.add(jta_name1);
		
		//创建按钮
		javax.swing.JButton bu_register=new javax.swing.JButton("注册帐号");
		java.awt.Dimension d2=new java.awt.Dimension(100,30);
		bu_register.setPreferredSize(d2);
		frame.add(bu_register);
		
		//添加文本框
		javax.swing.JTextField jta_name2=new javax.swing.JTextField();
		java.awt.Dimension d3=new java.awt.Dimension(200,30);
		jta_name2.setPreferredSize(d3);
		frame.add(jta_name2);
		
		//创建按钮
		javax.swing.JButton bu_sec=new javax.swing.JButton("找回密码");
		java.awt.Dimension d4=new java.awt.Dimension(100,30);
		bu_sec.setPreferredSize(d4);
		frame.add(bu_sec);
		
		//记住密码复选框
		javax.swing.JCheckBox jcb1=new javax.swing.JCheckBox("记住密码");
		frame.add(jcb1);
		
		//找回密码复选框
		javax.swing.JCheckBox jcb2=new javax.swing.JCheckBox("找回密码");
		frame.add(jcb2);
		
		//创建按钮
		javax.swing.JButton bu_login=new javax.swing.JButton("登录");
		java.awt.Dimension d5=new java.awt.Dimension(300,30);
		bu_login.setPreferredSize(d5);
		frame.add(bu_login);
		
	    //设置窗体显示出来
		frame.setVisible(true);
		
		//创建监听器
		ButtonListener bl=new ButtonListener();
		//给按钮加监听器
		bu_login.addActionListener(bl);
		
		//将文本框对象及窗口对象传至按钮监听器类
		bl.setJt1(jta_name1);
				
		bl.setJt2(jta_name2);
		
		bl.setJt3(frame);
	}
}

按钮监听器

package com.Liao.Login0626;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;

public class ButtonListener implements ActionListener {

	private JFrame jf;
	private JTextField jt1;
	private JTextField jt2;

	public void setJt3(JFrame jframe) {
		jf = jframe;
	}

	public void setJt1(JTextField jtext) {
		jt1 = jtext;
	}

	public void setJt2(JTextField jtext) {
		jt2 = jtext;
	}

	public void actionPerformed(ActionEvent e) {
		String name1 = jt1.getText();// 输入的帐号
		String name2 = jt2.getText();// 输入的密码
		//创建欢迎窗口对象
		Welcome wel = new Welcome();
		//设置QQ登录主界面窗口不可见
		jf.setVisible(false);
		//帐号密码正确弹出欢迎窗口,错误弹出确认信息
		if ("123".equals(name1) && "456".equals(name2)) {
			wel.show();
		} else {
			JOptionPane pane = new JOptionPane();
			JOptionPane.showMessageDialog(pane, "帐号密码错误");
		}

	}
}
欢迎登录窗口界面
package com.Liao.Login0626;

import java.awt.Font;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.SwingConstants;

public class Welcome {
	public void show() {
		JFrame jf = new JFrame("Result");
		// 设置窗体大小
		jf.setSize(360, 450);
		// 设置窗体居中
		jf.setLocationRelativeTo(null);
		// 设置退出方式
		jf.setDefaultCloseOperation(3);

		JLabel jl = new JLabel("欢迎登录", SwingConstants.CENTER);
		jl.setFont(new Font("宋体", Font.BOLD, 30));
		jf.add(jl);
		jf.setVisible(true);
	}
}
 就这样,一个简单的QQ登录界面就完成了,至于后面其它功能的实现则需要进一步的学习,敬请期待!









猜你喜欢

转载自blog.csdn.net/LIAO_7053/article/details/80994528