如何判断jTextField中输入的只能是数字类型的 如何判断jTextField中输入的只能是"012-3456789"中的一个.谢谢各位! 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 try{ MaskFormatter formatter=new MaskForamtter("###-#######"); formatter.setPlaceholderCharacter('0'); JFormattedTextField ftField=new JFormattedTextField(formatter); ftField.setValue("012-3456789"); ........}catch(ParseException e){e.printStackTrace();} 参考这个public class Chartest {public static void main(String[] args){Scanner scan = new Scanner(System.in);String str = scan.nextLine();for(int i = 0; i < str.length(); i ++){int cast = (int)str.charAt(i);if(cast < 48 || cast > 57){System.out.print("Error input");return;}}}} huyc_fly() 的为正解syhan(藏书人)的ms有一点不沾边jtextfield 跟控制台的dd还有有不小区别的 我的意思就是说得到string型的数据后每一位判断 to wangjiaddr(黑脊背):我用键盘监听器实现了,允许输入1234567890-,但是小键盘的*怎么也控制不了所以我才想用正则解决的不过对正则不是太熟悉,希望能得到大家的帮助谢谢 to syhan(藏书人) :你的 if(cast < 48 || cast > 57)是只能控制数字吧,不能控制-吧,当然了,这个办法是可以做的我用键盘监听就是通过一个一个字符控制来实现了,我就是感觉这种方法不是特别好 class IntegerDocument extends PlainDocument { private final String integer = "0123456789"; public void insertString(int offset , String inputStr , AttributeSet attributeSet) throws BadLocationException { Component component = SwingUtilities.findFocusOwner(MainDialog.this); if (component == textField1) { if ((textField1.getText().length() + inputStr.length()) > new Integer(dataLength).intValue()) { return; } } else if (component == textField2) { if ((textField2.getText().length() + inputStr.length()) > new Integer(dataLength).intValue()) { return; } } else { return; } for (int i = 0 , l = inputStr.length(); i < l ; i++) { int n = integer.indexOf(inputStr.charAt(i)); if (n < 0) { return; } } super.insertString(offset , inputStr , attributeSet); } } 可以监听键盘事件,也可以监听模型改变,或者干脆自己些个模型.顺便奉劝一句,别学SWING了,免得跟我一样没人要. SWING,呵呵,是不怎么好用不过我连AWT都用了好长时间,现在学SWT了,感觉有点不适应. private class OnlyDigit extends PlainDocument{ private JTextField f; public OnlyDigit(JTextField f){ this.f = f; } public void insertString(int offset, String str, AttributeSet attSet) throws BadLocationException{ StringBuffer tmp = new StringBuffer(f.getText()); tmp.insert(offset,str); Pattern p = Pattern.compile("^\\d*$");//这里可以改简单一点 Matcher m = p.matcher(tmp.toString()); if(m.find()){ super.insertString(offset,str,attSet); } } }textfield.setDocument(new OnlyDigit(textfield)); 插入数据库报时间格式错误,在线等求助谢谢! 问个菜鸟问题……thread.start是执行run方法么? 怎么查java 的帮助 大家帮我个忙,JAVA程序的题目! java菜鸟求助~这个程序的目的是为了读取一个文件夹中的文件,把at替换成@,找出邮箱并且把所有的邮箱打印到email文件中,但是有两个问题解决不了 我想学习java~~ ftp上传问题,求大神指教,真的挺急!!! 数据库连接中一个小问题 java中库和包的区别是什么? import java.util.*;那个是包,那个是库 新手请教 这段代码为什么能够实现Tree的倒序的排列? 接到外企面试通知 紧张
{
MaskFormatter formatter=new MaskForamtter("###-#######");
formatter.setPlaceholderCharacter('0');
JFormattedTextField ftField=new JFormattedTextField(formatter);
ftField.setValue("012-3456789");
........
}catch(ParseException e){e.printStackTrace();}
public class Chartest
{
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);String str = scan.nextLine();for(int i = 0; i < str.length(); i ++)
{
int cast = (int)str.charAt(i);
if(cast < 48 || cast > 57)
{
System.out.print("Error input");
return;
}
}}
}
我用键盘监听器实现了,
允许输入1234567890-,但是小键盘的*怎么也控制不了所以我才想用正则解决的
不过对正则不是太熟悉,希望能得到大家的帮助谢谢
你的 if(cast < 48 || cast > 57)
是只能控制数字吧,不能控制-吧,
当然了,这个办法是可以做的我用键盘监听就是通过一个一个字符控制来实现了,
我就是感觉这种方法不是特别好
{
private final String integer = "0123456789"; public void insertString(int offset , String inputStr ,
AttributeSet attributeSet) throws BadLocationException
{
Component component = SwingUtilities.findFocusOwner(MainDialog.this);
if (component == textField1)
{
if ((textField1.getText().length() + inputStr.length()) >
new Integer(dataLength).intValue())
{
return;
}
}
else if (component == textField2)
{
if ((textField2.getText().length() + inputStr.length()) >
new Integer(dataLength).intValue())
{
return;
}
}
else
{
return;
}
for (int i = 0 , l = inputStr.length(); i < l ; i++)
{
int n = integer.indexOf(inputStr.charAt(i));
if (n < 0)
{
return;
}
}
super.insertString(offset , inputStr , attributeSet);
}
}
不过我连AWT都用了好长时间,
现在学SWT了,感觉有点不适应.
private JTextField f; public OnlyDigit(JTextField f){
this.f = f;
}
public void insertString(int offset,
String str,
AttributeSet attSet)
throws BadLocationException{
StringBuffer tmp = new StringBuffer(f.getText());
tmp.insert(offset,str);
Pattern p = Pattern.compile("^\\d*$");//这里可以改简单一点
Matcher m = p.matcher(tmp.toString());
if(m.find()){
super.insertString(offset,str,attSet);
}
}
}textfield.setDocument(new OnlyDigit(textfield));