java编程如何使文本框不允许输入和粘贴除数字以外
java编程如何使文本框不允许输入和粘贴除数字以外的东西(如:字母,标点符号,空格等),如果检测到输入或粘贴的内容中有不是数字的则清空文本框并作出提示,请帮忙解决下,如身...
java编程如何使文本框不允许输入和粘贴除数字以外的东西(如:字母,标点符号,空格等),如果检测到输入或粘贴的内容中有不是数字的则清空文本框并作出提示,请帮忙解决下,如身份证文本框等。
在此十分感谢 little902师傅。 展开
在此十分感谢 little902师傅。 展开
7个回答
展开全部
首先你要给你的文本框加入监听.就是获得焦点时和失去焦点时.分别在里面调用一个对数字进行判断的方法.判断方法简单的就是loveweizaiwan了.思路就是先不管用户输入的是什么.当铅吵要提交前或者是要插库前对这个文本框内容进行验证.
这个是传统的验证思路.
若你需要实现一个实时验证的机制.那此山么就是需要向我开始时槐扒侍所说的.在文本框获得焦点时候进行验证.
可以给你的TextField 进行FocusListener的监听.两个方法分别调用一下方法
代码如下:
package com.text;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class InputNumber extends JFrame implements KeyListener
{
private static final long serialVersionUID = 1L;
private JTextField jtf;
private void initComponents()
{
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setForeground(Color.black);
setFont(new Font("Dialog", Font.PLAIN, 12));
setResizable(false);
setLayout(null);
add(getJTextField0());
setSize(300, 200);
setVisible(true);
}
private JTextField getJTextField0()
{
if (jtf == null)
{
jtf = new JTextField();
jtf.setBounds(40, 40, 155, 22);
jtf.addKeyListener(this);
}
return jtf;
}
public InputNumber()
{
initComponents();
}
private boolean isNumber(String num)
{
try
{
new Float("0" + num);
return true;
}
catch (Exception e)
{
return false;
}
}
public void keyPressed(KeyEvent e)
{
// TODO Auto-generated method stub
}
public void keyReleased(KeyEvent e)
{
JTextField j = (JTextField) e.getComponent();
if(!isNumber(j.getText()))
{
JOptionPane.showMessageDialog(jtf, "请输入数字");
j.setText("");
}
}
public void keyTyped(KeyEvent e)
{
JTextField j = (JTextField) e.getComponent();
if(!isNumber(j.getText()))
{
JOptionPane.showMessageDialog(jtf, "请输入数字");
j.setText("");
}
}
public static void main(String aa[])
{
new InputNumber();
}
}
这个是传统的验证思路.
若你需要实现一个实时验证的机制.那此山么就是需要向我开始时槐扒侍所说的.在文本框获得焦点时候进行验证.
可以给你的TextField 进行FocusListener的监听.两个方法分别调用一下方法
代码如下:
package com.text;
import java.awt.Color;
import java.awt.Font;
import java.awt.event.FocusEvent;
import java.awt.event.FocusListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
import javax.swing.WindowConstants;
public class InputNumber extends JFrame implements KeyListener
{
private static final long serialVersionUID = 1L;
private JTextField jtf;
private void initComponents()
{
setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
setForeground(Color.black);
setFont(new Font("Dialog", Font.PLAIN, 12));
setResizable(false);
setLayout(null);
add(getJTextField0());
setSize(300, 200);
setVisible(true);
}
private JTextField getJTextField0()
{
if (jtf == null)
{
jtf = new JTextField();
jtf.setBounds(40, 40, 155, 22);
jtf.addKeyListener(this);
}
return jtf;
}
public InputNumber()
{
initComponents();
}
private boolean isNumber(String num)
{
try
{
new Float("0" + num);
return true;
}
catch (Exception e)
{
return false;
}
}
public void keyPressed(KeyEvent e)
{
// TODO Auto-generated method stub
}
public void keyReleased(KeyEvent e)
{
JTextField j = (JTextField) e.getComponent();
if(!isNumber(j.getText()))
{
JOptionPane.showMessageDialog(jtf, "请输入数字");
j.setText("");
}
}
public void keyTyped(KeyEvent e)
{
JTextField j = (JTextField) e.getComponent();
if(!isNumber(j.getText()))
{
JOptionPane.showMessageDialog(jtf, "请输入数字");
j.setText("");
}
}
public static void main(String aa[])
{
new InputNumber();
}
}
展开全部
先添加键盘监听事件数族,然后写个正则表达式过滤一下文本框输入的内容,如薯轿弊果满足条件就正常显示,帆嫌不满足就给出提示并清空内容。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
嘿嘿,可以用线程不断地检查嘛.不过,下面的这个代码虽可以不断检测,但是有滑肢丛问题的信樱,就是每次发现输入了不是数字的字符后,光标饥散就会到最前面去了.但希望这种思路对你有所帮助.
new Thread()
{
public void run()
{
while(true)
{
String s=gsfyT.getText();
if(s.length()>0)
{
char c=s.charAt(s.length()-1);
if(!(c>='0'&&c<='9'))
{
s=s.substring(0,s.length()-1);
gsfyT.setText(s);
}
try
{
Thread.sleep(200);
}catch(InterruptedException e){}
}
}
}
}.start();
new Thread()
{
public void run()
{
while(true)
{
String s=gsfyT.getText();
if(s.length()>0)
{
char c=s.charAt(s.length()-1);
if(!(c>='0'&&c<='9'))
{
s=s.substring(0,s.length()-1);
gsfyT.setText(s);
}
try
{
Thread.sleep(200);
}catch(InterruptedException e){}
}
}
}
}.start();
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你说1楼的不对..那你是写C/S程序还是B/S程序..
B/S的就1楼的..
补充问题了我在来回答...
//写好了..
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class test extends JFrame implements KeyListener {
private JTextField jTextField1;
private String str="";
public static void main(String args[]) {
try {
test frame = new test();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
public test() {
super();
getContentPane().setLayout(null);
setBounds(100, 100, 360, 102);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jTextField1 = new JTextField();
jTextField1.setBounds(86, 10, 171, 25);
getContentPane().add(jTextField1);
jTextField1.addKeyListener(this);
}
public void keyPressed(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {
if (jTextField1.getText().matches("[0-9]+")) {
str=jTextField1.getText();
}else{
JOptionPane.showMessageDialog(null, "你输入了非数字");
jTextField1.setText(str);
}
}
}
B/S的就1楼的..
补充问题了我在来回答...
//写好了..
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JTextField;
public class test extends JFrame implements KeyListener {
private JTextField jTextField1;
private String str="";
public static void main(String args[]) {
try {
test frame = new test();
frame.setVisible(true);
} catch (Exception e) {
e.printStackTrace();
}
}
public test() {
super();
getContentPane().setLayout(null);
setBounds(100, 100, 360, 102);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
jTextField1 = new JTextField();
jTextField1.setBounds(86, 10, 171, 25);
getContentPane().add(jTextField1);
jTextField1.addKeyListener(this);
}
public void keyPressed(KeyEvent e) {}
public void keyTyped(KeyEvent e) {}
public void keyReleased(KeyEvent e) {
if (jTextField1.getText().matches("[0-9]+")) {
str=jTextField1.getText();
}else{
JOptionPane.showMessageDialog(null, "你输入了非数字");
jTextField1.setText(str);
}
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在java代码里可以用一个接受你输入在文本框里的内容,
如:String accept为你接受的数据,但是你可以这样;
Integer type = new Integer(accept);
如果accept里有存在字母或符号的它就会跑出异常,所以你就可以再catch里面进行提示了。
你看是不是这样,
也不知道我这一百分能得到不???
所以啊,我这方法是万无一失和游的,只要取出的是字母、特殊字符,他都会抛出异常,你启纳在catch里写代码提示就行悄棚没了。一边分我能得到么???
你试出来了么??
我的分呢???
居然还没搞定啊????
如:String accept为你接受的数据,但是你可以这样;
Integer type = new Integer(accept);
如果accept里有存在字母或符号的它就会跑出异常,所以你就可以再catch里面进行提示了。
你看是不是这样,
也不知道我这一百分能得到不???
所以啊,我这方法是万无一失和游的,只要取出的是字母、特殊字符,他都会抛出异常,你启纳在catch里写代码提示就行悄棚没了。一边分我能得到么???
你试出来了么??
我的分呢???
居然还没搞定啊????
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询