NetBeans 6.9中的OnSave操作

时间:2010-09-28 09:16:29

标签: netbeans

有没有办法告诉NetBeans在保存文件时执行特定操作?例如保存源文件时删除未使用的导入?

5 个答案:

答案 0 :(得分:0)

这是一个有趣的问题......因为我相信你必须编写一个自定义的NetBeans插件来做你想要的(功能不是开箱即用的),而且我已经一直在寻找探索NetBeans插件开发的借口。

然而,在花了几个小时阅读教程并浏览javadocs之后......很明显,这个主题很容易咀嚼,而且可能比你想要的更多。


我认为最好的建议是忘记在保存时间删除未使用的导入,而是在构建时执行此步骤。 NetBeans提供了与Ant和/或Maven的完美集成(出于构建目的,它基本上只是围绕这些工具的GUI包装器),并且有许多Ant任务可以完成您想要的任务。参见:

http://ant.apache.org/external.html
(寻找“CleanImports”和“Importscrubber”任务)

如果您的NetBeans项目是基于Maven的,那么您始终可以使用AntRun plugin for Maven插入其中一个Ant任务。

如果您不习惯在NetBeans中直接处理Ant或Maven ,那么只需切换到“文件”选项卡并查看项目的根目录。如果是Maven项目,则构建脚本将命名为pom.xml。否则,您的项目通常将基于Ant,构建脚本将命名为build.xml。上述这些项目的文档应该清楚地说明如何向前推进。


我注意到这两个Ant任务暂时没有更新,所以如果您遇到问题,可能需要查看非常受欢迎且最新的PMD system,它有自己的documentation for integrating with NetBeans {3}}。但是,问题在于PMD主要用于生成报告......我不知道它是否可以用来实际采取行动和更改源文件。

答案 1 :(得分:0)

不完全是您的问题的答案,但请注意NB 7.1允许您立即修复整个项目的导入:http://wiki.netbeans.org/NewAndNoteworthyNB71#Organize_Imports_Hint

答案 2 :(得分:0)

这不是一个好习惯,NetBeans不支持它。

答案 3 :(得分:0)

我复活了这个话题。

这段代码使用Netbeans 7.4进行测试。 在这里,我将覆盖actionPerformed方法中的默认保存操作。 如果您选择自己创建一个使用向导创建一个新Action,然后在actionPerformed方法中调用save操作。

package yourpackage;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JOptionPane;
import org.openide.awt.ActionID;
import org.openide.awt.ActionReference;
import org.openide.awt.ActionReferences;
import org.openide.awt.ActionRegistration;
import org.openide.util.NbBundle.Messages;

@ActionID(
        category = "File",
        id = "BZ.SaveAction"
)
@ActionRegistration(
        iconBase = "BZ/Save.png",
        displayName = "#CTL_SaveAction"
)
@ActionReferences({
    @ActionReference(path = "Menu/File", position = 750),
    @ActionReference(path = "Toolbars/File", position = 0),
    @ActionReference(path = "Shortcuts", name = "D-S")
})
@Messages("CTL_SaveAction=Save")
public final class SaveAction implements ActionListener {

    org.openide.actions.SaveAction sa = org.openide.util.actions.CallbackSystemAction.get(org.openide.actions.SaveAction.class);
    @Override
    public void actionPerformed(ActionEvent e) {
        // custom code
        JOptionPane.showMessageDialog(null, "custum message ");
        sa.performAction();
    }
}

答案 4 :(得分:0)

转到Tools-> Options选择Editor,然后选择On Save Tab,现在从下拉菜单中选择Java。所以,现在选择Organize Imports选项。希望这会对你有所帮助。