Java 限制jtextfield上的特定字符

Java 限制jtextfield上的特定字符,java,swing,user-interface,Java,Swing,User Interface,我怎样才能不让JTextField只键入数字0?我目前正在使用一个简单的销售系统,当数字0被输入到数量文本字段时,我试图发出一条错误消息,但购买仍将以0的数量记录。我如何不允许JTextField只输入数字0?-你需要允许用户输入“0”,因为他们想输入“10”。所以这个问题可以通过在开始处理之前进行编辑检查来解决。如果用户键入“a、b、c…”等,该怎么办?不要使用JTextField。相反,您可以使用JSpinner。阅读上的Swing教程。如果数字0是初始数字,是否有办法不允许键入?我在想一个

我怎样才能不让
JTextField
只键入数字0?我目前正在使用一个简单的销售系统,当数字0被输入到数量文本字段时,我试图发出一条错误消息,但购买仍将以0的数量记录。

我如何不允许JTextField只输入数字0?-你需要允许用户输入“0”,因为他们想输入“10”。所以这个问题可以通过在开始处理之前进行编辑检查来解决。如果用户键入“a、b、c…”等,该怎么办?不要使用JTextField。相反,您可以使用
JSpinner
。阅读上的Swing教程。如果数字0是初始数字,是否有办法不允许键入?我在想一个JTextField,如果第一个数字是零,它将使用,但允许在下一个数字中使用零。用户键入“10”然后删除“1”是什么?你还没有回答我关于用户输入“a”或“b”或“c”的问题。为什么您只关心0?如果使用文本字段,则必须编辑所有可能键入的字符。正如我在下面提到的,您总是可以使用
DocumentFilter
,但我提出了一个更简单的解决方案。(1-)您不会使用DocumentListener。文档已使用该值更新。如果您真的想限制“0”的键入,您可以使用DocumentFilter。但这也没有道理。见我对问题的评论。
class MyDocumentListener implements DocumentListener 
{
public void insertUpdate(DocumentEvent e) 
    {
    assistText();
    }
public void removeUpdate(DocumentEvent e) 
    {
    assistText();
    }
public void changedUpdate(DocumentEvent e) 
    {
    //Plain text components do not fire these events
    }           
private void assistText() {
    Runnable doAssist = new Runnable() {
        @Override
        public void run() {
            //here recognizes if exist a 0 and do your task
        }
    };
    SwingUtilities.invokeLater(doAssist);
}