Java apple.eawt.Application创建错误菜单?

Java apple.eawt.Application创建错误菜单?,java,macos,swt,finder,Java,Macos,Swt,Finder,如果我使用com.apple.eawt.Application即使是最低限度地实例化它,如下所示: Application app = Application.getApplication () 默认的Mac应用程序菜单行为不正常 下面的最小可运行测试代码在启动时显示一个“Hello World”shell,只有默认的应用程序菜单,如预期的那样标记为“SWT” 如果没有应用程序,选择“退出”(或按Command-Q键)将正常退出程序 对于应用程序,选择“退出”(或

如果我使用
com.apple.eawt.Application即使是最低限度地实例化它,如下所示:

               Application app = Application.getApplication ()
默认的Mac应用程序菜单行为不正常

下面的最小可运行测试代码在启动时显示一个“Hello World”shell,只有默认的应用程序菜单,如预期的那样标记为“SWT”

如果没有应用程序,选择“退出”(或按Command-Q键)将正常退出程序

对于应用程序,选择“退出”(或按Command-Q键)似乎会正常退出程序(例如shell消失),但标记为“SWT”的菜单仍然可见。它不启用,也不可选择。根据IDE(Idea),我的测试程序仍在运行,必须通过IDE终止

在我的环境中,使用下面的测试代码,这是100%可重复的

import com.apple.eawt.Application;
import org.eclipse.swt.SWT;
import org.eclipse.swt.layout.FillLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class AboutTester
{

    public static void main ( String[] args )
        {
            Display display = new Display ();
            Shell shell = new Shell ( display );
            shell.setSize ( 300, 200 );
            shell.setLayout ( new FillLayout () );



                            // Comment out the following line - problem goes away.
                Application app = Application.getApplication ();



            Label label = new Label ( shell, SWT.BORDER_SOLID );
            label.setText ( "Hello World" );
            shell.open ();
            while ( !shell.isDisposed () )
                {
                    if ( !display.readAndDispatch () )
                        display.sleep ();
                }
            display.dispose ();
        }
}
当然,不能访问
com.apple.eawt.Application
是Mac上的一大障碍

有人知道这个问题的解决办法吗

完全披露:我认为可能发生的事情(从其他观察结果来看)是应用程序正在生成一个菜单,然后SWT用SWT生成的菜单覆盖该菜单。附加AboutHandler()会附加到应用程序生成的菜单,因此在使用最顶端的SWT生成菜单时,它似乎不起作用。当SWT菜单退出时,它会将应用程序生成的菜单作为孤立菜单留在后面。我的测试应用程序不知道如何清理此应用程序生成的菜单,因此挂起。但这只是猜测

Mac OS X 10.6.8(10K549)
org.eclipse.swt.cocoa.macosx.x86_64_3.7.0.v3735b.jar
org.eclipse.swt_3.7.1.v3738a.jar


(忍者编辑输入错误)

我看到了完全相同的问题,我认为这可能是一个线程问题。如果您想在mac上拥有自定义菜单,那么可以使用这个文件从EclipseSWT端处理这些内容