【发布时间】: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 写一个空白然后为空。有效!
【问题讨论】: