1

Eclipse에서 편집기에 입력 된 내용을 확인할 수 있는지 궁금합니다. 현재 예제 JDT 편집기로 작업하고 있습니다. 해당 입력을 기반으로 작업을 수행하십시오.Eclipse : 편집기에서 입력을받을 때마다 작업 수행

예 : 편집기 편집기 창에 example.jav 파일이 열려 있습니다. 나는 'a'키를 누른다. 'a'는 정상적으로 편집기 창에 표시되지만 'a'는 콘솔에 출력됩니다.

필자가 수행 할 작업은 System.out.println() 문보다 복잡 할 수 있지만 편집자가 변경 사항을 어디에서 발견했는지 표시 할 수 있다면 그 곳에서 가져올 수 있습니다. .

몇 가지 참고 사항 :

  • 나는 당신이 JDT 예 편집기를 찾을 수없는 경우, 도움말>에 오신 것을 환영합니다> 샘플을 가서 자바 "를 클릭 자바 1.7
  • 이클립스 3.7.2에서 일하고 있어요 편집자".

미리 감사드립니다.

+0

반대로,'KeyListener'를 에디터에 추가 할 수 있습니까? – thanatavius

답변

0

알아 냈어!

편집기 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); 
         } 
        } 
       }); 

이렇게하면 다른 사람이 솔루션을 찾는 것보다 쉬운 시간을 가지기를 바랍니다.

관련 문제