Java 文本字段验证

标签 java swing jtextfield keylistener

我必须验证一个 java 文本字段,它只接受最大长度为 10 的整数值。必须跳过输入其他值。

我尝试了如下。在这种情况下,我无法输入句号。

private void jTextField2KeyTyped(java.awt.event.KeyEvent evt) {                                     
        char c = evt.getKeyChar();

        if(!(Character.isDigit(c) || (c==KeyEvent.VK_BACK_SPACE)||(c==KeyEvent.VK_STOP ) )){
            getToolkit().beep();

            evt.consume();

            }

    }          

最佳答案

为此,您可以使用 DocumentFilter ,如下所示:

JTextField f = new JTextField(10);
((AbstractDocument)f.getDocument()).setDocumentFilter(new DocumentFilter(){
    Pattern pattern = Pattern.compile("\\d*");

    @Override
    public void replace(FilterBypass arg0, int arg1, int arg2, String arg3, AttributeSet arg4) throws BadLocationException {
        String text = arg0.getDocument().getText(0, arg0.getDocument().getLength())+arg3;
        Matcher matcher = pattern.matcher(text);
        if(!matcher.matches()){
            return;
        }
        if(text.length()>10){
            return;
        }
        super.replace(arg0, arg1, arg2, arg3, arg4);
    }
});

关于Java 文本字段验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20469163/

相关文章:

java - 将 .addKeyListener 应用于 JTextFields 数组

java - 使用 JButtons 将文本添加到两个文本字段

Java - Graphics2D - 鼠标移动后绘制一条线

java - JTable基于一列宽度的水平滚动条

java - 如果用户单击 IE Pane ,IE 中的模式对话框将隐藏在 IE 后面

java - JPanel 不重绘

java - 创建多个由用户输入定义的 JTextField s,以便通过按下按钮从所有这些输入中读取文本

java - 无法在 netbeans 上找到文件

java - 业务层中的有状态 EJB 用于 Web 层的 session 范围

java - 在 Java 中使用 XAdES-EPES 对 XML 进行签名