0

我已经处理这个问题一个多星期了,现在它开始影响我的工作效率。

我有一个应用自定义文档过滤器的 JTextBox。要添加它,我右键单击控件,进入自定义代码,并在所有内容下方添加此行:

 ((javax.swing.text.AbstractDocument)jtfTextField.getDocument()).setDocumentFilter(new mylibrary.NumericDocumentFilter());

现在,这是一个复制粘贴工作(因为我在其他地方使用过)。我想将过滤器设置为的字段称为TextField. 不小心点了确定,编译了,就炸了。呃,我明白我的错误了。我修复它,重新编译,我仍然得到错误。现在我的代码有这个:

 ((javax.swing.text.AbstractDocument)TextField.getDocument()).setDocumentFilter(new mylibrary.NumericDocumentFilter());
 ((javax.swing.text.AbstractDocument)jtfTextField.getDocument()).setDocumentFilter(new mylibrary.NumericDocumentFilter());

当我进入自定义代码时,它只显示正确的(顶部)代码。我关闭 Netbeans,使用 Notepad++ 编辑文件并删除有问题的行,然后重新启动 Netbeans。现在它编译,我运行它,测试,然后当我返回时,代码重新生成了错误的行。

我炸毁了 Netbeans 的缓存,但什么也没做,所以我真的不知道如何解决这个问题。有接盘侠吗?

Netbeans 版本 7.3.1。

更新:我窥探了一下,在我的 Topcomponent 的 *.form 文件中找到了这个:

<AuxValues>
    <AuxValue name="JavaCodeGenerator_AddingCodePost" type="java.lang.String" value="((javax.swing.text.AbstractDocument)jtfTextField.getDocument()).setDocumentFilter(new mylibrary.NumericDocumentFilter());"/>
</AuxValues>

也许删除它可以解决问题,但我不确定,并且真的不想冒险破坏这个项目。

4

1 回答 1

1
  1. 尝试清理并重建您的项目(默认为 Shift + F11)。如果这不会重新生成表单并且错误仍然存​​在:
  2. 编辑表单:用您的代码替换value上面标记属性中的代码。

至于错误本身,您应该只将生成的代码放在生成的部分中。您始终可以initComponents()在构造函数中的方法之后执行 post-init。这避免了 GUI 编辑器中可能出现的错误,并为您简化了对代码的控制。

于 2014-03-17T18:43:54.777 回答