我最近在我的Mac OS X上开发了一个带有eclipse的SWT Standalone应用程序。问题是我已经完成了,我想通过eclipse导出将我的应用程序导出到Runnable Jar文件。当我在Mac OS X上运行时,一切正常,但我也想在Ubuntu和其他基于Unix的发行版上运行该应用程序。 所以我想我只是将我的eclipse项目导入相应操作系统上的eclipse应用程序,并再次将该应用程序导出为Runnable Jar。现在的问题是我的应用程序的大部分功能都不再起作用了......突然之间简单的事情就像文本框一样不再显示了,按钮也不再起作用了。 奇怪的是,当我在我的eclipse应用程序中启动应用程序时,一切正常。我拼命想找到一种方法来解决这个问题,但我找不到任何东西。希望有人可以帮我解决这个问题... 它只是一个版本问题还是我错过了其他什么?
以下是我可以从我的应用程序中打开的一个jface Dialog的示例代码:
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.swt.SWT;
import org.eclipse.swt.widgets.Text;
// remaining imports omitted
public class ConnectionSettings extends Dialog {
/**
* The current status.
*/
private Text status;
// Other privates fields omitted.
@Override
protected Control createDialogArea(Composite parent) {
Composite container = (Composite) super.createDialogArea(parent);
GridLayout gridLayout = (GridLayout) container.getLayout();
gridLayout.numColumns = 2;
// other initialisation of labels and text fields omitted
Group grpStatus = new Group(container, SWT.NONE);
grpStatus.setLayout(new GridLayout(1, false));
grpStatus.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 2,
1));
grpStatus.setText("Status");
// This Text field isn't shown in the exported application
status = new Text(grpStatus, SWT.BORDER | SWT.READ_ONLY | SWT.WRAP
| SWT.H_SCROLL | SWT.V_SCROLL);
status.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true, 1, 1));
// button omitted
return container;
}
// overriding this methods allows you to set the
// title of the custom dialog
@Override
protected void configureShell(Shell newShell) {
super.configureShell(newShell);
newShell.setText("Connection Settings");
}
@Override
protected Point getInitialSize() {
return new Point(450, 348);
}
这就是我在eclipse中启动应用程序时的样子:
当我启动导出的应用程序时,它就是这样的:
正如您所看到的那样,只要其他一切正常,就不会显示文本字段。