java swing 怎么设置文本框只能输入数字

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java swing 怎么设置文本框只能输入数字相关的知识,希望对你有一定的参考价值。

java swing中利用JFormattedTextField的控件加keyReleased能实现,以下实现的只能输入数字的文本框代码:

import java.text.ParseException;
import javax.swing.JFormattedTextField;
import javax.swing.JFrame;
import javax.swing.JPanel;

/**
*
* @author Administrator
*/
public class JFormattedText extends JFrame 

   private JFormattedTextField text;

   public JFormattedText() 
       JPanel panel = new JPanel();
       text = new JFormattedTextField(new java.text.DecimalFormat("#0"));
//        text = new JFormattedTextField();
//        text.setFormatterFactory(new javax.swing.text.DefaultFormatterFactory(new javax.swing.text.NumberFormatter(new java.text.DecimalFormat("#0"))));
       text.setFont(new java.awt.Font("宋体", 0, 12)); // NOI18N
       text.setMaximumSize(new java.awt.Dimension(50, 21));
       text.setMinimumSize(new java.awt.Dimension(50, 21));
       text.setPreferredSize(new java.awt.Dimension(50, 21));
       //过滤输入的字符
       text.addKeyListener(new java.awt.event.KeyAdapter() 
           public void keyReleased(java.awt.event.KeyEvent evt) 
               String old = text.getText();
               JFormattedTextField.AbstractFormatter formatter = text.getFormatter();
               if (!old.equals(""))  
                   if (formatter != null) 
                       String str = text.getText();
                       try 
                           long page = (Long) formatter.stringToValue(str);
                           text.setText(page + "");
                        catch (ParseException pe) 
                           text.setText("1");//解析异常直接将文本框中值设置为1
                       
                   
               
           
       );
       panel.add(text);
       this.add(panel);
       this.setBounds(200, 100, 100, 100);
   

   public static void main(String[] arg) 
       new JFormattedText().setVisible(true);
   
参考技术A 要在文本框上加上键盘侦听,如果键值的不是数字键,就不动,这样就实现了追问

能说一下具体怎么加吗

追答

JTextField text=new JTextField();
text.addKeyListener(new KeyListener()

@Override
public void keyPressed(KeyEvent e)
// TODO Auto-generated method stub
text.setText(text.getText().replaceAll("^[0-9]", ""));


JTextField的声明注意要放到构造器外作为全局变量,不然在public void keyPressed方法内引用会报错

本回答被提问者采纳
参考技术B 可以使用javax.swing.JFormattedTextField控件,里面可以设置内容格式等。追问

哪个方法啊

如何限制用户只能输入0-50的数字

如何限制用户只能输入0-50的数字,在JTextField或JTextArea中。
如果输入了非法字符的话弹出提示框提示,又该如何实现呢?

参考技术A 我写了一个,你运行看看 类名为InputTest.java
我这个就算是输入非数字也不会报错,你运行就知道了。

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.swing.JOptionPane;

public class InputTest
public static void main(String args[])
Pattern p = Pattern.compile("[0-4][0-9]|[5][0]|[0-9]");

String s = JOptionPane.showInputDialog("请输入数字:");

Matcher m = p.matcher(s);
if(m.matches())JOptionPane.showMessageDialog(null, "是0-50之间的数", "结果", JOptionPane.OK_CANCEL_OPTION);
elseJOptionPane.showMessageDialog(null, "不是0-50之间的数.", "结果", JOptionPane.ERROR_MESSAGE);


本回答被提问者采纳
参考技术B 可以在处理异常时抛出一个提示信息(跳出一个对话框)说“你输入了非数字”
因为抛出异常一般是类型转换异常(但你要确保该方法里就这个异常而没别的异常)
将文本框里的内容转换成数字 然后设转换后的数字变量为a
if(a<0 || a>50)
跳出对话框提示信息("输入有误")

is this what you want???
参考技术C 你用的Jtextfield或者area里面得到的value都是字符串,你要用integra.parsInt()把它转换成整数然后判断>0 <50就ok 了这个太简单了 参考技术D 你写个方法来判断撒,先获取文本框中的值,再将它转为int型,如果转不了就抛出异常,能转的话再判断它是不是符合你的要求,java中是没有内置的方法可以实现你这个功能的,如果你代码不会写,就再mi我~ 第5个回答  2009-01-18 你还有什么要求,一起说出来。100分,我给你代码。

以上是关于java swing 怎么设置文本框只能输入数字的主要内容,如果未能解决你的问题,请参考以下文章

用jquery validate时,1.文本框只能输12个字符,再输就不让输进去,怎么设置,2.如果不是数字根本不让输

一个文本框只允许输入数字

谁能告诉我java的Swing中文本输入框怎么提取输入的数据赋值到int型变量上?急用,谢谢了。

js怎么控制文本框只能输入数字

js怎么控制文本框只能输入数字

asp.net怎么限制文本框输入的类型c#