【问题标题】:Netbeans regenerates broken code in TopComponent. How do I fix this?Netbeans 在 TopComponent 中重新生成损坏的代码。我该如何解决?
【发布时间】:2014-03-17 17:47:30
【问题描述】:

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

我有一个应用自定义文档过滤器的 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>

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

【问题讨论】:

    标签: java netbeans compiler-generated


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

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

    【讨论】:

    • 看起来选项 2 做到了。我一直认为使用“自定义代码”会使代码看起来更干净,因为它会在那里封装所有属性,但我认为现在我会坚持制作一个initCustomComponents() 函数。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 1970-01-01
    相关资源
    最近更新 更多