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方法内引用会报错
哪个方法啊
如何限制用户只能输入0-50的数字
如何限制用户只能输入0-50的数字,在JTextField或JTextArea中。
如果输入了非法字符的话弹出提示框提示,又该如何实现呢?
我这个就算是输入非数字也不会报错,你运行就知道了。
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.如果不是数字根本不让输