控制“身份证号”文本框的输入内容

本文介绍了一个简单的Java Swing应用程序,用于验证用户输入的身份证号码。通过使用JFrame、JLabel、JTextField和JButton等组件创建GUI界面,实现了身份证号码输入框的焦点事件监听和键盘事件监听,确保输入合法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1)      创建ControlInputTest类,该类继承JFrame类,并分别编写一个main()方法和无参数的构造方法;

2)      在ControlInputTest类的无参数构造方法中添加代码,依次向窗体中添加一个标签、文本框和按钮 [先添加一个面板,再将它们加到面板上,这样实现的更接近截图中所示效果] ,再为文本框添加提示文本、焦点事件监听器和键盘事件监听器;

3)      MyFocus类为ControlInputTest类的内部类,负责处理文本框的焦点事件,当文本框获得焦点时设置文本框为空,当文本框失去焦点时,如果文本框的内容为空,则为文本框设置显示的文本“请输入身份证号!”;

4)      MyKey类也是ControlInputTest类的内部类,负责处理文本框的键盘事件,当用户输入的是0~9的数字时,则响应用户的输入,前提条件是输入内容的长度不能大于18;

运行时,当文本框获得焦点时,文本框将不显示任何文本信息,当光标移动到文本框上方(文本框内部)并停留一段时间时,将弹出提示文本,如图A-4所示;单击“确定”按钮后,文本框将失去焦点,如果此时在文本框中未输入任何内容,文本框将显示一段默认文本“请输入身份证号!”,如图所示。


import javax.swing.*;
import javax.swing.event.ChangeListener;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Scanner;

public class ControlInputTest extends JFrame implements ActionListener {
	static JFrame frm=new JFrame();
	static JLabel label=new JLabel("身份证号:");
	static JButton jb=new JButton("确定");
	static  JTextField text =new JTextField();
	JTextField tip =new JTextField("身份证号只能是15位号或18位号的数字");
	
	//main
	public static void main(String[] args) {
		
		ControlInputTest ci =new ControlInputTest();
		
	}
	
	//窗口
	public ControlInputTest(){
		
		frm.setTitle("验证数据合法性");
		frm.setLayout(null);
		
		//设置标签
		
		label.setBounds(5,5,80,40);
		label.setHorizontalAlignment(JLabel.CENTER);
		frm.getContentPane().add(label);
		
		//创建文本框
		
		text.setHorizontalAlignment(JTextField.CENTER);
		text.setBounds(90,5,200,40);
		frm.getContentPane().add(text);
		
		//创建按钮
		
		jb.setBounds(300, 5, 60, 40);
		frm.getContentPane().add(jb);
				
		//提示栏
		tip.setEditable(false);
		tip.setBackground(Color.gray);
		tip.setBounds(100, 60, 250, 30);
		frm.getContentPane().add(tip);
		
		

		//监听
		jb.addActionListener(this);
		MyFocus my = new MyFocus();
		text.addFocusListener(my);
		MyKey mk=new MyKey();
		text.addKeyListener(mk);
		

		//----
		frm.setBounds(400,200,380,150);
		frm.setVisible(true);
				
	}
	
	//按钮清空
	public void actionPerformed(ActionEvent e)
	{
	if(e.getSource()==jb)
	{
		
	}
}
	
	//
	class MyFocus implements FocusListener{
		public void focusGained(FocusEvent a) {
			text.setText("");
			tip.setVisible(true);
			
		}
		public void focusLost(FocusEvent a) {
			text.setText("请输入身份证号!");
			tip.setVisible(false);
			
		}
		
	}
	
	//
	class MyKey implements KeyListener{

		@Override
		public void keyPressed(KeyEvent e) {
			// TODO Auto-generated method stub
		}

		@Override
		public void keyReleased(KeyEvent e) {
			// TODO Auto-generated method stub
		}

		@Override
		public void keyTyped(KeyEvent e) {
			// TODO Auto-generated method stub
			int keyChar=e.getKeyChar();
			if(keyChar>=KeyEvent.VK_0&&keyChar<=KeyEvent.VK_9)
			{
				//输入1-9
			}
			else
				e.consume();//屏蔽其他
		}
		
	}

}




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

百里东君~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值