알아 냈어!
편집기 API가 너무 광범위하여 시작할 위치를 알기가 어렵 기 때문에 KeyListener를 내 셸에 추가하는 데 중점을 둡니다. SWT에서는 쉘 내부의 항목에 초점이 맞춰 지거나 쉘 자체가 인 경우 포커스를 잃을 때와 같이 약간 문제가 있음을 알 수 있습니다. 그래도 약간의 검색을 한 후에 나는 someone else who had the same problem을 우연히 발견했다. 셸의 디스플레이에 필터를 추가하여 전체 응용 프로그램에서 작동하는 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를 추가 할 수 있습니다) 확실 현재 활성화되어 있는지 확인하는 검사를 추가 할 수 있습니다 누르면 키에 대한 걱정 부분은 간단한 if 점검을 사용하여 조치를 수행하려는 부분과 동일합니다.
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