用 Java实现登陆界面

Swing和AWT组件

Swing是Java基础类库的一部分,用于绘制用户界面;AWT一般是指像事件处理这样的窗口工具箱的底层机制。两者均为用户界面库,AWT构建的图形界面可跨平台,但依赖于目标平台,不同平台图形环境的界面组件不同,要满足所有的平台AWT就只能局限在平台功能共同的范围内,因此AWT的功能较为简单。Swing基于AWT架构之上提供了能力更强大的用户界面组件。
要实现登陆界面需要用到的组件:

import javax.swing.*;
import java.awt.*;

构建框架

顶层窗体被称为框架,在Swing中的JFrame类用来描述顶层窗体,在初始化方法中实例化JFrame对象并设置框架的位置 、大小、标题、关闭动作、可见(这个最后设置)

package zsw.Login;

import javax.swing.*;

public class Login {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Login login=new Login();
		login.initUI();
	}

	public void initUI(){
		JFrame frame=new JFrame();
		frame.setSize(300,500);//设置大小 调用setSize(int width,int height),设置frame窗体长和宽
		frame.setTitle("登陆界面");//设置标题
		frame.setLocation(100,100);//设置标题 调用setLocation(int x,int y),窗口放置在左上角水平x像素,垂直y像素的位置
		frame.setLocationRelativeTo(null);//设置相对位置居中
		frame.setDefaultCloseOperation(2);//设置关闭方式
		frame.setVisible(true);//设置可见为"true"
	}	
}

添加元素组件

显示文字、图片、或接受用户输入信息的为元素组件类,除此外还有辅助类用于加载图片和设置布局等。需首先引入

import javax.swing.ImageIcon;//加载图片
import java.awt.Dimension;//封装组建大小
import java.awt.FlowLayout;//设置流式布局

添加标签、文本输入框、密码输入框、按钮、图片

FlowLayout fl=new FlowLayout(FlowLayout.CENTER,5,5)//FlowLayout类实例化对象并调用构造方法
frame.setLayout(fl);//setLayout(FlowLayout fl)方法设置流式布局,类似word文档,但不能回车换行

ImageIcon icon=new ImageIcon(C:\\Users\\Image\\Pictures)//实例化ImageIcon对象并加载磁盘上的图片
JLabel image=new JLabel(icon);//实例化标签对象,该对象显示icon图标
Dimension di=new Dimension(300,280);//封装组件大小
image.setPreferredSize(di);//顶层窗口设置大小可用setSize(int x,int y);其他组件设置大小用setPreferredSize(Dimension d);
frame.add(image);//将image对象加到frame窗体上

JLabel labName=new JLabel("账户:")//实例化标签对象,该对象显示文字“账户:”
frame.add(labName);//将labName对象添加到frame窗体上;

JTextName text=new JTextName();//实例化文本输入框对象
Dimension dim=new Dimension(200,30);//封装文本输入框大小
text.setPreferredSize(dim);//setPreferredSize()方法设置大小
frame.add(text);//将对象添加到窗体上

JLabel labWordName=new JLabel("密码:");
frame.add(labWordName);

JPasswordField password=new JPasswordField();
Dimension dimn=new Dimension(200,30);
password.setPreferredSize(dimn);
frsame.add(password);

JButton button=new JButton("登陆")
Dimension dimen=new Dimension(70,30);
button.setPreferredSize(dimen);
frame.add(button);

frame.setVisible(true);

事件监听机制

事件源对象:图形界面上发生动作的组件,如鼠标点击按钮,按钮是事件源。事件源对象能注册监听器并发送事件对象。
监听器:实现了监听器接口的类的一个对象.
事件发生时,时间源对象将事件对象发送给监听器,监听器对事件作出回应。

import javax.swing.*;
import java.awt.event.*;
public class LoginListener implements ActionListener {

	public void actionPerformed(ActionEvent e){
		JFrame newFrame=new JFrame();
		newFrame.setTitle("登陆成功");
		newFrame.setSize(300,200);
		newFrame.setDefaultCloseOperation(2);
		newFrame.setLocation(100,100);
		newFrame.setLocationRelativeTo(null);
		newFrame.setVisible(true);
	}
}

实现监听器接口ActionListener必须实现actionPerformed抽象方法,也是事件处理方法.
接收事件对象ActionEvevt.可用事件对象获取事件源信息.

LoginListener buttonListener=new LoginListener();//实例化监听器对象
button.addActionListener(buttonListener);//组件添加监听器

点击按钮后弹出新窗口。
但原窗口没有关闭,账户密码也没有经过验证,因此需要再进行改写,使监听器对象获取输入框内容,并对原窗口进行操作。

import javax.swing.*;
import java.awt.event.*;
public class LoginListener implements ActionListener {
	private JFrame loginFrame;//实例化窗口对象
	private JTextField textInput;//接收账户输入
	private JPasswordField passwordInput;//接受密码收入
	
	public void setFrame(JFrame l)
	{
		loginFrame=l;//传递登录窗口
	}
	public void setText(JTextField t)
	{
		textInput=t;
	}
	public void setPassword(JPasswordField p)
	{
		passwordInput=p;
	}
	public void actionPerformed(ActionEvent e){
		if(textInput.getText().equals("123")&&passwordInput.getText().equals("321")){
			JFrame newFrame=new JFrame();
			newFrame.setTitle("登陆成功");
			newFrame.setSize(300,200);
			newFrame.setDefaultCloseOperation(2);
			newFrame.setLocation(100,100);
			newFrame.setLocationRelativeTo(null);
			newFrame.setVisible(true);

			loginFrame.dispose();
			}//如果账号密码为特定字符,则执行以上操作,getText()方法取得输入框输入字符
	else{
		JFrame newFrame=new JFrame();
			newFrame.setTitle("登陆失败");
			newFrame.setSize(300,200);
			newFrame.setDefaultCloseOperation(2);
			newFrame.setLocation(100,100);
			newFrame.setLocationRelativeTo(null);
			JLabel label=new JLabel("账号密码错误");//通过标签对象添加文字
			newFrame.add(label)
			newFrame.setVisible(true);
		}
	}
}

在Login类中,调用set方法传递对象

import javax.swing.*;
import java.awt.FlowLayout;
import java.awt.Dimension;

public class Login {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		Login login=new Login();
		login.initUI();
	}

	public void initUI(){
		JFrame frame=new JFrame();
		frame.setSize(300,500);//设置大小 调用setSize(int width,int height),设置frame窗体长和宽
		frame.setTitle("登陆界面");//设置标题
		frame.setLocation(100,100);//设置标题 调用setLocation(int x,int y),窗口放置在左上角水平x像素,垂直y像素的位置
		frame.setDefaultCloseOperation(2);//设置关闭方式
		frame.setLocationRelativeTo(null);//设置相对位置
		
		FlowLayout fl=new FlowLayout(FlowLayout.CENTER,5,5);
		frame.setLayout(fl);
		
		ImageIcon icon=new ImageIcon("C:\\Users\\20669\\Pictures\\Saved Pictures\\新建文件夹\\ChMkJlg2YSCIU1S-ABP43F0gSR8AAYB1gKIfGEAE_j0755.png");
		JLabel image=new JLabel(icon);
		Dimension di=new Dimension(300,280);
		image.setPreferredSize(di);
		frame.add(image);
		
		JLabel labName=new JLabel("账户:");
		frame.add(labName);
		
		JTextField text=new JTextField();
		Dimension dim=new Dimension(200,30);
		text.setPreferredSize(dim);
		frame.add(text);
		
		JLabel labWordName=new JLabel("密码:");
		frame.add(labWordName);
		
		JPasswordField password=new JPasswordField();
		Dimension dimn=new Dimension(200,30);
		password.setPreferredSize(dimn);
		frame.add(password);
		
		JButton button=new JButton("登陆");
		Dimension dimen=new Dimension(70,30);
		button.setPreferredSize(dimen);
		frame.add(button);
		
		LoginListener buttonListener=new LoginListener();
		buttonListener.setFrame(frame);
		buttonListener.setText(text);
		buttonListener.setPassword(password);
		button.addActionListener(buttonListener);
		
		frame.setVisible(true);//设置可见为"true"
	}	
}

这样登陆界面就基本完成了。

你可能感兴趣的:(用 Java实现登陆界面)