java.swing JtextField 中怎么限制只能输入数字

Posted

tags:

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

怎么才能实现,是不是需要注册事件通过事件来实现。在线急等

是的,可以通过Integer.parseInt()这个方法来判断,不过要重写一个异常: 通过是否抛出转换异常来判断

private void initComponents()

jTextField1 = new javax.swing.JTextField();
jButton1 = new javax.swing.JButton();

setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);

jTextField1.setText("jTextField1");
jTextField1.setName("jTextField1"); // NOI18N

jButton1.setText("jButton1");
jButton1.setName("jButton1"); // NOI18N
jButton1.addActionListener(new java.awt.event.ActionListener()
public void actionPerformed(java.awt.event.ActionEvent evt)
jButton1ActionPerformed(evt);

);
this.add(jButton1);
this.add(jTextField1);

pack();
// </editor-fold>

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt)
// TODO add your handling code here:
try

Integer.parseInt( this.jTextField1.getText());
catch(RuntimeException e)
javax.swing.JOptionPane.showMessageDialog(this,"请输入数字!!","输入错误",javax.swing.JOptionPane.ERROR_MESSAGE);




/**
* @param args the command line arguments
*/
public static void main(String args[])
java.awt.EventQueue.invokeLater(new Runnable()
public void run()
new Number_Test().setVisible(true);

);


// Variables declaration - do not modify
private javax.swing.JButton jButton1;
private javax.swing.JTextField jTextField1;
// End of variables declaration

参考技术A 有必要吗,只要用一句话:

正则表达式 很简单的就完成了..

给楼主一个简单的例子...楼主一年就会明白的...

import java.util.regex.Pattern;

public class PatternTest
public static void main(String[] args)

String str="1a3";//需要判断的字符串
System.out.println(Pattern.matches("^[0-9]+$", str));//判断是否符合全由数字组成,符合返回true,否则返回false


本回答被提问者采纳
参考技术B 我只是来支持下2楼.. 佩服哈.. .不知道建不建议加俺QQ. 有事多多请教你... 82557566

如何拦截转到 Java Swing JTextField 的键盘敲击?

【中文标题】如何拦截转到 Java Swing JTextField 的键盘敲击?【英文标题】:How to intercept keyboard strokes going to Java Swing JTextField? 【发布时间】:2011-04-07 01:10:58 【问题描述】:

JTextField 是一个初始化为零的计算器显示,显示带有前导 0 的十进制数字(如 0123 或 00123)是一种不好的形式。NetBeans Swing JFrame 中的数字按钮 (0..9) 使用 append() [下面] 删除前导零,但用户可能更喜欢键盘而不是鼠标,并且还需要处理非数字字符。

private void append(String s) 
    if (newEntry) 
        newEntry = false;
        calcDisplay.setText(s);
     else if (0 != Float.parseFloat(calcDisplay.getText().toString())) 
        calcDisplay.setText(calcDisplay.getText().toString() + s);
    

【问题讨论】:

【参考方案1】:

您可以通过添加自定义 KeyListener 来限制输入到 JTextField 的字符。下面是一个演示这个想法的简单示例:

myTextField.addKeyListener(new KeyAdapter() 
  @Override
  public void keyTyped(KeyEvent e) 
    char c = e.getKeyChar();
    if (!Character.isDigit(c)) 
      e.consume(); // Stop the event from propagating.
    
  
);

当然,您需要考虑像 Delete 这样的特殊键和像 CTRL-C 这样的组合,因此您的 KeyListener 应该更加复杂。甚至可能有免费的实用程序可以为您完成大部分繁重的工作。

【讨论】:

帮助很大。非常感谢。 DocumentFilter 建议是可行的方法。这是在 JDK4 中添加到 Swing 的,并且是使用 KeyEvents 的首选方法。您对 CTRL-C 的评论是过滤器更好的原因之一。【参考方案2】:

您可以使用DocumentFilter 来做到这一点。

(编辑:这个答案最初包括对我现在已不存在的博客上一个简单的完整示例程序的要求。)

【讨论】:

汤姆。该链接作为一个未格式化的长行有点难以阅读。 试图将其作为 Windows 文本文件读取?我认为写字板应该处理它,但记事本不会。 Windows 上的 Chrome 显示正确; IE 没有。我会链接到描述它的博客条目,但我在 google 中找不到(可能 jroller 不稳定)。

以上是关于java.swing JtextField 中怎么限制只能输入数字的主要内容,如果未能解决你的问题,请参考以下文章

java swing JTextField设置PlaceHolder [重复]

如何在 Java Swing 中控制 JTextField 的宽度?

Java Swing JtextField 插图

关于Java swing组件焦点的问题(我猜可能是焦点的问题) 高分求全面

如何在具有许多 JTextField 的 Java Swing JFrame 实例中获取关键事件?

将文件路径拖放到 Java Swing JTextField