如何使用 netbeans 插件修复导入 /api

how fix imports using a netbeans plugin /api

我正在开发 NetBeans extension/plugin。现在我想以编程方式修复导入。我使用机器人 class 并模拟键 ctrl + shift + i 这是快捷方式fix imports。它有效,但有一些 problems.for 示例需要聚焦编辑器面板,然后我必须将它带到字体并等待。有时我必须窃取焦点。并且由于它是一个扩展,如果我这样做,它可以在内部访问羽毛一种模拟我真的不需要扩展。那么我如何在内部修复从 Java class 的 NetBeans 扩展导入?

我都阅读了 faq site and development javadoc 但我找不到任何与修复导入选项相关的内容。

我 运行 在我真正让它工作之前就没时间了,但希望这会有所帮助。

我想你想要的class是org.netbeans.modules.java.editor.imports.JavaFixAllImports

如果您有正确的参考资料,其中有许多方法看起来很有前途。

为了使用它,您需要您的模块依赖于 Java Editor 模块,该模块不会公开导出其任何包。因此,要使用它,您需要单击“添加模块”对话框中的 Show NON-API Modules 复选框,然后您需要编辑模块依赖项和 select Implementation Version 单选按钮并确保复选框Include Packages in Classpath 已设置。

像这样:

您可以在这里浏览源代码:

http://hg.netbeans.org/main/file/842027a30807/java.editor/src/org/netbeans/modules/java/editor/imports/JavaFixAllImports.java

除了开头的一个许可和作者评论之外,java文档评论似乎没有太多影响。


更新

感谢 WillShackleford,我能够从插件代码中修复导入。如果有人想知道如何使用 netbean 插件修复导入(对于 java)。 这是代码。 你应该导入 org.netbeans.modules.java.editor.imports.JavaFixAllImports

  public void importFix() {
       JavaFixAllImports fiximports = JavaFixAllImports.getDefault();
       jtc = EditorRegistry.lastFocusedComponent();
       FileObject fo = FileUtil.toFileObject(new File("path of the .java file"));
       fiximports.fixAllImports(fo, jtc);
   }