【问题标题】:Problems clearing TextField when designed for digit-only input为纯数字输入设计时清除 TextField 的问题
【发布时间】:2016-06-30 03:45:39
【问题描述】:

我的贡献者使用了一个 Java 程序,我需要对其进行更新以在较新的 Windows 版本上工作。我必须反编译现有的来获取代码。其中一个错误是 GUI 上的一个字段被设置为仅数字字段,然后当您点击清除按钮时,除文本字段外的所有文本字段都将被清除。以下是数字限制的编码方式:

public void keyPressed(KeyEvent paramKeyEvent)
{
  char c = paramKeyEvent.getKeyChar();
  if ((!Character.isDigit(c)) && (Character.getType(c) != Character.CONTROL)) {
    paramKeyEvent.consume();
  }
}

当清除代码使用 setText("") 写入文本字段时,该字段不会被清除。我怀疑是因为上面的 if 语句没有识别 null 并且事件被消费了。

我用 C 语言编程了 15 年,但自 1 月以来我才开始自学 Java,所以目前我无法及时对这段代码进行重大更改。我看到有很多方法可以实现纯数字输入,但我并不急于重写这段代码的大部分内容,如果可能的话以它的结构方式解决它。

感谢您在解决此问题方面的任何帮助。谢谢。

作为更新,我尝试在该字段中写入零而不是“”,这很有效,所以看起来这是导致问题的实现方式。

经过更多搜索(我以为我已经彻底搜索了!)我发现了对 setText 错误的引用——解决它的唯一方法似乎是使用 setText 写一个空白然后为空。有效!

【问题讨论】:

    标签: java textfield digit


    【解决方案1】:

    您不能使用setText("") 而是添加一个空白setText(" ")

    【讨论】:

    • 嗯,这很奇怪——所有其他文本字段都可以很好地写入“”。只有数字字段不会清除。但正如你所说,我确实发现,如果我先写一个空格,然后再写一个“”,就可以了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-08-03
    • 2018-09-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多