导出的SWT Standalone应用程序的某些功能无法正常工作

时间:2015-02-01 19:04:07

标签: java eclipse macos unix swt

我最近在我的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中启动应用程序时的样子: That's how it looks like when I start my application within eclipse:

当我启动导出的应用程序时,它就是这样的: That's how it looks like when I start my exported application:

正如您所看到的那样,只要其他一切正常,就不会显示文本字段。

0 个答案:

没有答案