【问题标题】:Validate JTextField while typing in输入时验证 JTextField
【发布时间】:2017-10-14 16:44:33
【问题描述】:

我有一个文本字段,我想在输入时验证文本字段的输入。就像谷歌注册表单一样。我尝试使用线程。但它看起来像一团糟。

【问题讨论】:

  • 看看here,你可能会发现一些有用的东西。
  • @VasilisG.,没有。不要使用 KeyListener。使用 DocumentListener 或 JFormattedTextField。

标签: java swing validation


【解决方案1】:

我有一个文本字段,我想在输入时验证文本字段的输入。就像谷歌注册表单一样。我尝试使用线程。但它看起来像一团糟。

您不必在键入时使用线程来检查输入。您可以使用为此目的实现的DocumentListener

它可以在您在文本字段中输入时监听文本字段的变化,即输入字符/删除字符。

【讨论】:

  • 谢谢。我发现 Document Listener 非常有用。我了解 insertUpdate() 和 removeUpdate 方法。但我实际上不知道何时使用 changedUpdate 方法。你能给我举个例子吗?
  • @John 只需使用 insertUpdate 和 removeUpdate。 changedUpdate 可以留空。如果我的解决方案解决了您的问题,您可以接受我的解决方案。
  • 是的。不过我明白了。 changedUpdate 仅在您更改输入的大小、字体...时发生。无论如何,再次感谢您。
  • @John 您可以通过单击我答案旁边的空心勾号来感谢我。这也表明您的问题已在我的帮助下得到解决。
【解决方案2】:

您可以为此 TextField 使用 KeyListener。

这是一个例子:

import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;

import javax.swing.*;  

public class JtextField {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

            JFrame f= new JFrame("TextField Example");  

            JTextField t1;  
            t1=new JTextField("Welcome, Give me a world");  
            t1.setBounds(50,100, 200,30);  

            f.add(t1);  
            f.setSize(400,400);  
            f.setLayout(null);  
            f.setVisible(true);  

             t1.addKeyListener(new KeyListener() {

                @Override
                public void keyTyped(KeyEvent e) {
                    // TODO Auto-generated method stub
                    System.out.println("keyTyped");
                }

                @Override
                public void keyReleased(KeyEvent e) {
                    // TODO Auto-generated method stub
                    System.out.println("keyReleased");
                }

                @Override
                public void keyPressed(KeyEvent e) {
                    // TODO Auto-generated method stub
                    System.out.println("keyPressed");
                }
            }); 
    }

}

【讨论】:

  • 不要使用 KeyListener。正如使用DocumentListener 的答案所建议的那样,Swing 具有更新更好的 API。
猜你喜欢
  • 2013-10-01
  • 2015-05-20
  • 2021-02-13
  • 2014-12-16
  • 1970-01-01
  • 2012-12-31
  • 1970-01-01
  • 2013-10-11
  • 1970-01-01
相关资源
最近更新 更多