想通了!由於編輯器API在eclipse中非常龐大,很難知道從哪裏開始,因此我專注於將KeyListener添加到Shell。結果發現在SWT中存在一些問題,因爲當殼牌項目獲得重點關注時,殼牌本身重點關注。經過一番搜索,我偶然發現了someone else who had the same problem。通過在Shell的顯示中添加一個過濾器,您可以添加一個適用於整個應用程序的Listener對象。如:
IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
Shell shell = window.getShell();
shell.getDisplay().addFilter(SWT.KeyDown, new Listener()
{
public void handleEvent(Event event)
{
System.out.println("" + event.character);
}
});
爲了推動這一點,只擔心在特定的非小部件的部分(否則你可以只添加一個KeyListener的該部分),您可以添加一個檢查,以確保當前活動的按鍵部分與您希望通過使用簡單的檢查來執行操作的任何部分相同。
final IWorkbenchWindow window = PlatformUI.getWorkbench().getActiveWorkbenchWindow();
Shell shell = window.getShell();
shell.getDisplay().addFilter(SWT.KeyDown, new Listener()
{
public void handleEvent(Event event)
{
IWorkbenchPage page = window.getActivePage();
IWorkbenchPart part = page.getActivePart();
IEditorPart editor = page.getActiveEditor();
if(part.equals(editor))
{
System.out.println("" + event.character);
}
}
});
這是希望這可以幫助別人比我找到解決方案更容易的時間!
相反,是否可以將「KeyListener」添加到編輯器中? – thanatavius