怎样实现在TextField里只能输入数字

请问大家怎样实现在TextField里只能输入数字;请写一下能用的代码我会追分的谢谢... 请问大家怎样实现在TextField里只能输入数字;
请写一下能用的代码

我会追分的
谢谢
展开
 我来答
citytalent
推荐于2016-07-19 · TA获得超过1222个赞
知道小有建树答主
回答量:542
采纳率:0%
帮助的人:579万
展开全部
我是用的键盘监听

import java.awt.Dimension;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JFrame;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JTextField;

public class Test45 extends JFrame implements KeyListener {
JTextField tf = new JTextField(20);

int limit = 15;

private static Pattern NUM_PATTERN = Pattern.compile("\\d*");

public Test45() {

JPanel jp = new JPanel();
tf.addKeyListener(this);
jp.add(tf);
getContentPane().add(jp);
setDefaultCloseOperation(EXIT_ON_CLOSE);

setSize(new Dimension(400, 300));
setVisible(true);
}

public void keyTyped(KeyEvent e) {
}

public void keyReleased(KeyEvent e) {
String str = tf.getText();
Matcher m = NUM_PATTERN.matcher(str);
if (!m.matches()) {
getToolkit().beep();
e.consume();
System.out.println("only number allowed!");
JOptionPane.showMessageDialog(null, "only number allowed!");
str = str.substring(0, str.length() - 1);
tf.setText(str);
}
}

public void keyPressed(KeyEvent e) {
}

public static void main(String[] a) {
new Test45();
}
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yehaizi_2008
2008-06-17 · TA获得超过276个赞
知道小有建树答主
回答量:258
采纳率:0%
帮助的人:324万
展开全部
private boolean IsNumber(String str){
boolean is=false;
for(int i=0;i<str.length();i++){
char ch=str.charAt(i);
if(!Character.isDigit(ch)){//此处使用了Character类中isDigit()是否为数字方法
return is=true;
}
}
return is=false;
}
在用到的地方调用这个方法;

例如
String str=TextField.getText().trim();//取得文本框中的值
if(IsNumber(str)){//如果为真则表示不是数字
System.out.println("不是数字!");
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ruhaisanren
2008-06-17 · TA获得超过172个赞
知道小有建树答主
回答量:350
采纳率:0%
帮助的人:365万
展开全部
改编自一偏sun公司开发文档

import javax.swing.text.*;
import java.awt.*;
/**
* 描述:调用格式为jTextField.setDocument(new NumberDocument())即可
* 补充:这是一个单独的类.
*
*/
public class NumberDocument extends PlainDocument {
public void insertString(int offs, String str, AttributeSet a)
throws BadLocationException {
char[] source = str.toCharArray();
char[] result = new char[source.length];
int j = 0;
for (int i = 0; i < result.length; i++) {//对输入的字串进行判断
if (Character.isDigit(source[i]))//是数字
result[j++] = source[i];
else {//不是数字
Toolkit.getDefaultToolkit().beep();
//System.out.println("你输入了非数字字符!!")
}
}
super.insertString(offs, new String(result, 0, j), a);
}

}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
uestcfb
2008-06-17 · TA获得超过1068个赞
知道小有建树答主
回答量:609
采纳率:0%
帮助的人:710万
展开全部
用JTextField的子类:JFormattedTextField
一个简单的例子:

import java.awt.BorderLayout;
import java.text.DecimalFormat;

import javax.swing.*;

public class T extends JFrame {
{
JTextField jt = new JFormattedTextField(new DecimalFormat());
add(jt);
add(BorderLayout.SOUTH, new JButton("submit"));

pack();
setLocationRelativeTo(null);
setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
setVisible(true);
}

public static void main(String[] args) {
new T();
}
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式