JAVA登录界面的实现(一)

  学习JAVA的过程中,登录界面是多数人第一个实现的小程序。今天我们就来做一下登录界面。当然在动手写代码之前我们要先做一些准备工作,我们要先了解JAVA提供的图形界面类有哪些,以及有哪些常用的组件类和辅助类。

一、JAVA提供的图形界面类

1.AWT组件

AWT组件是JDK1.0的时候推出的图形界面类,它的名字是根据包名而来的:java.awt。

AWT组件是在实现的时候采用的是c和c++的语言混合实现的,并且调用了操作系统底层的函数。

由于AWT组件的实现语言和底层函数的调用,导致AWT组件无法实现跨平台性。

2.SWING组件

SWING组件是JDK1.4的时候推出的图形界面类,它的名字也是根据包名而来的:javax.swing。

SWING组件是基于AWT组件的基础上,采用纯JAVA语言实现的一套跨平台组件。

 

但是不管使用AWT组件还是SWING组件开发的应用程序都是可以跨平台的。

二、常用的组件类和辅助类

1.容器组件类:组件上可以添加其他的组件,则该组件就是容器组件。

这里我们将要用到的是JFrame。它是一个窗体容器组件类(属于顶级容器)。通常如果我们要实现一个图形界面,首先一定要先有一个顶级容器。

2.元素组件类:一般是用来显示文字、图片或者接受用户输入信息的组件。

这里我们要用到的是

JLabel     标签元素类     显示文字或图片,也可以两者一起显示

JTextField      文本输入框元素组件类      接收用户输入的信息,然后将输入的信息直接显示出来。

JPasswordField      密码输入框组件类        接收用户输入的信息,然后把每一个字符都用一个加密符号显示

JButton        按钮元素组件类         显示文字或图片,也可以两者一起显示,可以点击

上述的容器组件类和元素组件类都是属于SWING组件中的类,在使用的时候要记得加上包名,eg:javax.swing.Frame;

如果要使用AWT组件,只需要把类名的第一个J去掉,eg:java.awt.Frame.

但是awt组件中没有密码输入框,如果要使用则必须自己利用TextField设计

3.辅助类:帮助组件完成某一个特定功能的类

我们这里需要用到的辅助类如下

java.awt.FlowLayout      流式布局类

布局类是针对容器组件的,它会让添加到容器上的组件按照布局类的方式去排列对齐。如果我们没有设置窗体的布局,那么我们添加的组件就会出现覆盖的问题,最后只会显示最后添加的那个组件流式布局的效果类似于word文档,对组件按行进行排列,当前行满了再放到下一行。但是不能像word一样回车换行。

java.awt.Dimension      封装组件宽度和高度的类

javax.swing.ImageIcon     图标类   从磁盘上加载一个图片到内存

注意:磁盘中的图片我们是不能直接用的,必须要先把它加载到内存中。

了解完我们要使用的组件,接下来我们就开始来做一个登录界面了。

首先我们先想一下登录界面需要有哪些功能?

1.要有输入账号密码的文本框

2.要能够对输入的账号密码进行验证。如果不正确则停留在原来的界面,如果正确则弹出一个新界面,并且关闭原来的界面。

今天我们就先实现功能(一),那么根据功能(一)我们先来做个简单思路分析

实现有账号密码输入框的界面

1.我们需要先定义个Login类,这个类中我们需要定义一个主函数入口和初始化界面的方法initUI。

2.主函数中,我们要去实例化Login类的对象,并由这个对象去调用初始化界面的方法。

3.在initUI方法中,我们要利用JFrame类来实现一个顶层窗体,所以我们要实例化一个JFrame的对象。

4.有了窗体对象后,我们要去设置窗体对象的属性:布局、标题、大小、显示位置、关闭操作、禁止调整大小、可见等等。注意:布局一定不要忘记设置,并且布局的设置要在我们开始添加组件之前。

5.设置完窗体后我们就可以去添加各种组件了。需要注意一点组件一定要按照出现的前后顺序来添加。在我们这里依次是图片、账号标签、账号文本输入框、密码标签、密码文本输入框、登录按钮。

 

三、代码解析

 

我们先实现功能(一)

import java.awt.Dimension;
import java.awt.FlowLayout;

import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JTextField;
import javax.swing.JPasswordField;
import javax.swing.JButton;

 //1.定义Login类,
public class Login {

	
	 // 1.在类中定义主函数
	public static void main(String[] args) {
		// 2.在主函数中,实例化Login类的对象,调用初始化界面的方法。
		Login login = new Login();
		login.initUI();

	}

	
	// 1.在类中定义初始化界面的方法;
	 
	public void initUI() {
		// 3.在initUI方法中,实例化JFrame类的对象。
		JFrame frame = new JFrame();
		// 4.设置窗体对象的属性值:标题、大小、显示位置、关闭操作、布局、禁止调整大小、可见、...
		frame.setTitle("Login");// 设置窗体的标题
		frame.setSize(400, 650);// 设置窗体的大小,单位是像素
		frame.setDefaultCloseOperation(3);// 设置窗体的关闭操作;3表示关闭窗体退出程序;2、1、0
		frame.setLocationRelativeTo(null);// 设置窗体相对于另一个组件的居中位置,参数null表示窗体相对于屏幕的中央位置
		frame.setResizable(false);// 设置禁止调整窗体大小

		// 实例化FlowLayout流式布局类的对象,指定对齐方式为居中对齐,组件之间的间隔为5个像素
		FlowLayout fl = new FlowLayout(FlowLayout.CENTER, 10, 10);
		// 实例化流式布局类的对象
		frame.setLayout(fl);

		// 5.实例化元素组件对象,将元素组件对象添加到窗体上(组件添加要在窗体可见之前完成)。
		// 实例化ImageIcon图标类的对象,该对象加载磁盘上的图片文件到内存中,这里的路径要用两个\
		ImageIcon icon = new ImageIcon("C:\\Desktop\\蓝杰学习\\材料\\爱晚亭.gif");
		// 用标签来接收图片,实例化JLabel标签对象,该对象显示icon图标
		JLabel labIcon = new JLabel(icon);
		//设置标签大小
		//labIcon.setSize(30,20);setSize方法只对窗体有效,如果想设置组件的大小只能用
		Dimension dim = new Dimension(400,300);
		labIcon.setPreferredSize(dim);
		// 将labIcon标签添加到窗体上
		frame.add(labIcon);

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

		// 实例化JTextField标签对象
		JTextField textName = new JTextField();
		Dimension dim1 = new Dimension(300,30);
		//textName.setSize(dim);//setSize这方法只对顶级容器有效,其他组件使用无效。
		textName.setPreferredSize(dim1);//设置除顶级容器组件其他组件的大小
		// 将textName标签添加到窗体上
		frame.add(textName);

		//实例化JLabel标签对象,该对象显示"密码:"
		JLabel labpass= new JLabel("密码:");
		//将labpass标签添加到窗体上
		frame.add(labpass);
		
		
		//实例化JPasswordField
		JPasswordField textword=new JPasswordField();
		//设置大小
		textword.setPreferredSize(dim1);//设置组件大小
		//添加textword到窗体上
		frame.add(textword);
		
		//实例化JButton组件 
		JButton button=new JButton();
		//设置按钮的显示内容
		Dimension dim2 = new Dimension(100,30);
		button.setText("登录");
		//设置按钮的大小
		button.setSize(dim2);
		frame.add(button);
		
		frame.setVisible(true);// 设置窗体为可见
	}

}

注意点:1.setSize这个设置大小的方法只对顶层容器有效,也就是我们这里的JFrame,如果想要设置组件的大小,必须用setPreferredSize();格式是

        Dimension dim = new Dimension(400,300);//先用Dimension设置好大小

        labIcon.setPreferredSize(dim);//再把设置好的Dimension对象传到setPreferredSize中

2.frame.setVisible(true);这条设置界面可见的语句必须放在组件都添加完之后

3.组件对象实例化完了记得用frame.add(textName)语句把组件加到窗体上。

实现后界面如下:

 

现在我们已经把简单的登录界面实现出来了,但是当你点击登录按钮的时候程序是没有反应的。如何在用户点击登录按钮时进行用户信息的确认,这就涉及到Java的监听机制,具体的可以看我的第二篇博客:JAVA登录界面的实现(二)

 

  • 162
    点赞
  • 936
    收藏
    觉得还不错? 一键收藏
  • 18
    评论
以下是一个简单的Java Swing实现用户登录界面的示例代码: ```java import javax.swing.*; import java.awt.*; import java.awt.event.*; public class Login extends JFrame implements ActionListener { JLabel userLabel, passwordLabel; JTextField userText; JPasswordField passwordText; JButton loginButton, cancelButton; public Login() { setTitle("用户登录"); setSize(300, 150); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); JPanel panel = new JPanel(); panel.setLayout(new GridLayout(3, 2)); userLabel = new JLabel("用户名:"); panel.add(userLabel); userText = new JTextField(20); panel.add(userText); passwordLabel = new JLabel("密码:"); panel.add(passwordLabel); passwordText = new JPasswordField(20); panel.add(passwordText); loginButton = new JButton("登录"); loginButton.addActionListener(this); panel.add(loginButton); cancelButton = new JButton("取消"); cancelButton.addActionListener(this); panel.add(cancelButton); add(panel); setVisible(true); } public void actionPerformed(ActionEvent e) { if (e.getSource() == loginButton) { String user = userText.getText(); String password = new String(passwordText.getPassword()); // 进行用户登录验证,此处省略具体实现 JOptionPane.showMessageDialog(this, "登录成功!"); } else if (e.getSource() == cancelButton) { System.exit(0); } } public static void main(String[] args) { new Login(); } } ``` 该示例代码使用了Java Swing库实现一个简单的用户登录界面,包含了用户名、密码输入框、登录按钮和取消按钮。登录按钮与取消按钮均添加了事件监听器,当用户点击登录按钮时会进行用户登录验证,验证成功后会弹出一个提示框显示“登录成功”,当用户点击取消按钮时会退出程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值