Java 正在清除JFormattedTextField的内容是否不起作用?

Java 正在清除JFormattedTextField的内容是否不起作用?,java,swing,jformattedtextfield,Java,Swing,Jformattedtextfield,我有一个JFormattedTextField,它只接受8位数字,但当我试图用backspace按钮清除textfield时,它不会删除数字的第一个字符(与delete按钮的行为相同),每次我都必须显示Esc键来删除这个字符 NumberFormat intFormat = NumberFormat.getIntegerInstance(); intFormat.setGroupingUsed(false); NumberFormatter numberFormatter = new Numbe

我有一个
JFormattedTextField
,它只接受8位数字,但当我试图用backspace按钮清除textfield时,它不会删除数字的第一个字符(与delete按钮的行为相同),每次我都必须显示Esc键来删除这个字符

NumberFormat intFormat = NumberFormat.getIntegerInstance();
intFormat.setGroupingUsed(false);
NumberFormatter numberFormatter = new NumberFormatter(intFormat);
numberFormatter.setValueClass(Integer.class); 
numberFormatter.setAllowsInvalid(false);
numberFormatter.setMinimum(0);
numberFormatter.setMaximum(99999999);

releaseNoTextField = new JFormattedTextField(numberFormatter);
这里有什么问题

  • releaseNoTextField.setText(“”
    清除此文本字段也不起作用,是否有其他方法
  • 我有一个JFormattedTextField,它只接受8位数字,但是当我尝试用backspace按钮清除textfield时,它不会删除数字的第一个字符(与delete按钮的行为相同),每次我都必须显示Esc键来删除这个字符

    NumberFormat intFormat = NumberFormat.getIntegerInstance();
    intFormat.setGroupingUsed(false);
    NumberFormatter numberFormatter = new NumberFormatter(intFormat);
    numberFormatter.setValueClass(Integer.class); 
    numberFormatter.setAllowsInvalid(false);
    numberFormatter.setMinimum(0);
    numberFormatter.setMaximum(99999999);
    
    releaseNoTextField = new JFormattedTextField(numberFormatter);
    
    这是由
    numberFormatter.setAllowsInvalid(false)应用的限制
    将空白的
    字符串
    “”
    )视为无效的数值。如果使用
    numberFormatter.setAllowsInvalid(true)
    您可以删除所有字符,但也可以输入您喜欢的任何值

    但是,在用户离开该字段后,将对该字段进行验证

    如果您不关心已格式化的值(
    12345678
    ),则可以使用应用于普通
    JTextField
    DocumentFilter
    ,实现其中所需的逻辑。有关更多详细信息,请参阅和

    用releaseNoTextField.setText(“”)清除此文本字段也不起作用,有其他方法吗


    您应该(始终)为
    JFormattedTextField
    使用
    setValue
    ,并且应该为true
    setValue(null)
    以清除该字段

    releaseNoTextField.setFocusLostBehavior(javax.swing.JFormattedTextField.COMMIT)

    “也用releaseNoTextField.setText(“”)清除此文本字段不起作用,有其他方法吗?”-您是否尝试过
    setValue(null)
    ?什么意思是
    不起作用
    ?我“认为”这是
    JFormattedTextField
    之间的要求,
    NumberFormatter
    NumberFormat
    表示
    不是有效数字,因此它拒绝您删除最后一个字符的尝试。此要求由
    numberFormatter.setAllowsInvalid
    强制执行。如果您并不真正关心值的格式,只是简单地限制用户的输入,您可以使用
    JTextField
    DocumentFilter
    @mad程序员在用户离开字段并清除文本后,有没有办法提示错误?如果您使用
    setAllowsInvalid(true)
    ,然后,在用户离开该字段后,应重置该字段。通常,我会使用
    InputVerifier
    ,但我不确定这是否适合
    JFormattedTextField