在netbeans中检索当前打开的文件或项目的位置

时间:2013-04-18 18:39:53

标签: java netbeans ide custom-controls project

我在netbeans中使用自定义按钮来引用打开项目中的文件。但是,我在根据打开的项目检索该文件的位置时遇到问题。 因此,我需要能够返回我正在处理的项目位置或我正在使用的文件位置的东西。
从本质上讲,我需要能够打电话

String projectLocation = methodOrVarToGetOpenProjectLocation();

我无法使用当前目录,因为我使用该按钮创建的插件与我正在使用的项目不在同一个地方。

有什么想法吗?

2 个答案:

答案 0 :(得分:4)

您可以像这样找到Project目录:

Lookup lookup = Utilities.actionsGlobalContext(); 
Project project = lookup.lookup(Project.class);
FileObject projectDir = project.getProjectDirectory();
String projectLocation = projectDir.getPath();

这些类都来自NetBeans API:UtilitiesLookupProjectFileObject

如果您不想只使用当前的Project,可以使用OpenProjects类。您可以按如下方式获得第一个打开的项目:

Project project = OpenProjects.getDefault().getOpenProjects()[0];

根据您的按钮所做的事情,使用the Main Project

可能有意义
Project mainProject = OpenProjects.getDefault().getMainProject();

答案 1 :(得分:1)

Dave Webb上面的回答负责获取项目位置。但是,如果在单击按钮之前未直接选择所需项目,则会出现问题,因此不会将该项目视为主项目。
例如,在文件中进行编辑然后单击按钮将不再找到项目,因为项目名称不是最后点击的内容。
我找到了一些抓住打开文件名的代码:

TopComponent activeTC = TopComponent.getRegistry().getActivated();
DataObject dataLookup = activeTC.getLookup().lookup(DataObject.class);
String filePath = FileUtil.toFile(dataLookup.getPrimaryFile()).getAbsolutePath();

我在project为空的if语句中使用了这个(在他的第一个代码块的第二行之后)。

这为我提供了我正在处理的文件的路径,然后花了很少的时间使用字符串来获取项目的位置。