【发布时间】:2022-01-10 03:38:38
【问题描述】:
MacOS 10.15.5 Eclipse RCP 2020-09
问题:MenuItem Selection 事件失效
代码:
@Override
protected void configureShell(Shell newShell) {
newShell.setImage( Images.getImageDescriptor(ImageConstants.IMG_LoL).createImage() ) ;
newShell.setText( LoLPlugin.getPluginName() );
newShell.setBackgroundMode( SWT.INHERIT_DEFAULT ) ;
newShell.setLayout( new FillLayout() ) ;
newShell.setMenuBar( createMenuBar(newShell) ) ;
newShell.setSize( getInitialSize() ) ;
newShell.setLocation( getInitialLocation( newShell ) ) ;
newShell.addDisposeListener( e -> { newShell.getImage().dispose() ; saveLocation() ; } ) ;
newShell.setData( window ) ;
}
private Menu createMenuBar(Shell shell) {
Menu mainMenu = new Menu( shell , SWT.BAR ) ;
MenuItem bundleItem = new MenuItem( mainMenu , SWT.PUSH ) ;
bundleItem.setText( Message.BundleBook_Name ) ;
bundleItem.addListener(SWT.Selection, e -> showBook( BundleBook.ID ) );
MenuItem resourceItem = new MenuItem( mainMenu , SWT.PUSH ) ;
resourceItem.setText( Message.ResourceBook_Name ) ;
resourceItem.addListener(SWT.Selection, e -> showBook( ResourceBook.ID ) );
MenuItem guideItem = new MenuItem( mainMenu , SWT.PUSH ) ;
guideItem.setText( Message.GuideBook_Name ) ;
guideItem.addListener( SWT.Selection , e -> showBook( GuideBook.ID ) ) ;
return mainMenu ;
}
private void showBook( String id ) {
System.out.println( "MaC OS Cannot execute - Window OS Is OK" ) ;
bookcase.showBook( id ) ;
}
结果:MacOS 无法执行,事件未触发
窗口操作系统没问题
【问题讨论】:
-
你为什么不使用
MenuItem#addSelectionListener()? -
.....这是我的偏好...有关系吗?
-
没有用MenuItem#addSelectionListener()...我试过了
-
@nitind addSelectionListener 最终只是在内部使用 SWT.Selection 样式列表。