我知道這個問題已經很長時間了,但我想用一個有效的代碼片段來更新它,以防萬一有人需要它。我在Eclipse Luna,Indigo和Kepler上進行了測試。
public void resourceChanged(final IResourceChangeEvent event) {
if (event == null || event.getDelta() == null) {
return;
}
try {
event.getDelta().accept(new IResourceDeltaVisitor() {
public boolean visit(final IResourceDelta delta) throws CoreException {
IResource resource = delta.getResource();
if (((resource.getType() & IResource.PROJECT) != 0)
&& resource.getProject().isOpen()
&& delta.getKind() == IResourceDelta.CHANGED
&& ((delta.getFlags() & IResourceDelta.OPEN) != 0)) {
IProject project = (IProject)resource;
projectOpened(project);
}
return true;
}
});
} catch (CoreException e) {
e.printStackTrace();
}
}
完美的作品。謝謝!! –
這對於Eclipse Indigo和Project Explorer不起作用。 getKind()返回CHANGED,getFlag()返回0,getResource()返回WorkspaceRoot類的一個實例。 –
@schnikow我也遇到過,但第一個三角洲的孩子是項目。對於訪問者來說,當'resource instanceof IWorkspaceRoot'時,它必須返回true。 – clockworkgeek