一般來說SWT.Selection是點擊滑鼠左鍵的事件,SWT.MenuDetect是點擊滑鼠右鍵的事件
不過在OSX中SystemTray偵測點擊事件如果用SWT.Selection會噴出可怕的錯誤。
雖然用起來感覺不出有問題,但總是不太舒服。他的行為跟預期的也不一樣,menu會在點擊icon的位置上出現。(預期是切齊狀態列)
錯誤訊息會長的像這樣
Mar 1 01:04:51 Dais-MacBook-Air.local java[20437] <Error>: Failed to create window context device
Mar 1 01:04:51 Dais-MacBook-Air.local java[20437] <Error>: CGWindowContextCreate: failed to create window context delegate.
2013-03-01 01:04:51.236 java[20437:270f] _initWithWindowNumber: error creating graphics ctxt object for ctxt:0x2450f, window:0xffffffff
另外SWT.MenuDetect在OSX中,左鍵點擊或右鍵點擊都會有這個Event。SWT.Selection則是左鍵點擊。
正確作法如下:
TrayItem system_tray;
system_tray = new TrayItem(display.getSystemTray(), SWT.NONE);
system_tray.setImage(create_image("icon.png"));
system_tray.setText("SwtBot - Test");
system_tray.addListener(SWT.MenuDetect, new Listener() {
@Override
public void handleEvent(Event arg0) {
menu.setVisible(true);
}
});