用 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"}	
}

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部