市面几本书里内容都有点老,写的需要添加的外部jar包都不完全对,HelloJFace在Eclipse Indigo SR2编译都通不过,会报:
java.lang.NoClassDefFoundError: org/eclipse/core/runtime/IProgressMonitor
原因是IProgressMonitor在org.eclipse.equinox.common_version.jar里,添加之后又会报:
java.lang.NoClassDefFoundError: org/eclipse/core/commands/common/EventManager
添加org.eclipse.core.commands_version.jar即可。
删除多余jar后,发现HelloJFace运行只需要四个jar:
org.eclipse.swt.win32.win32.x86_version.jar
org.eclipse.jface_version.jar
org.eclipse.equinox.common_version.jar
org.eclipse.core.commands_version.jar
HelloJFace示例:
import org.eclipse.jface.window.ApplicationWindow;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Text;
public class HelloJFace extends ApplicationWindow{
public HelloJFace() {
super(null);
}
protected Control createContents(Composite parent) {
Text helloText = new Text(parent, SWT.CENTER);
helloText.setText("Hello JFace");
parent.pack();
return parent;
}
public static void main(String[] args) {
HelloJFace win = new HelloJFace();
win.setBlockOnOpen(true);
win.open();
Display.getCurrent().dispose();
}
}