2017-12-19 6 views
0

확장 클래스가 ColumnViewerToolTipSupport입니다. 이 클래스는 createViewerToolTipContentArea()을 무시하고 툴팁에 맞춤 콘텐츠를 제공합니다.기본 셸 수신기 대신 ESC 키를 사용하여 사용자 지정 수신기를 호출하는 방법?

툴팁이 열려있는 동안 ESC 키를 누르면 shell.close() 메서드가 호출됩니다. 툴팁 셸에 키 리스너가 추가 된 경우에도 shell.close() 자체가 호출됩니다.

코드 아래 리스너 :

@Override 
    protected Composite createViewerToolTipContentArea(Event event, ViewerCell cell, final Composite shell) { 

     Display.getDefault().getActiveShell().addListener(SWT.KeyDown, new Listener() { 
      @Override 
      public void handleEvent(final Event event) { 
       if (event.type == SWT.KeyDown) { 
        System.out.println("key pressed ..........close shell"); 
       } 
      } 
     }); 
} 

어떤 실수 있나요?

+0

이벤트를 수신하는 것만으로 다른 리스너가하는 일을 변경하지 않습니다. –

+0

쉘 리스너 대신 리스너를 호출하기 위해 여기서 무엇을 할 수 있습니까 ?? –

+0

'getListeners (SWT.KeyDown)'을 호출하고 리스너를 제거해 볼 수 있습니다. –

답변

0

이 작업을 시도 할 수 : 트릭을 할해야

event.doit = false; 

합니다.

0

ToolTip 클래스 (ColumnViewerToolTipSupport의 기본 클래스)를 확인하면 이벤트 처리를 변경하는 옵션이 없음을 알 수 있습니다. keydown (ESC는 물론) 및 기타 이벤트를 수신하는 개인 리스너 구현을 사용합니다.

제공된 유일한 API는 afterHideToolTip (이벤트 이벤트)입니다. 여기서 이벤트의 ESC 키를 확인할 수 있습니다. 하지만 추가 작업 만 할 수 있습니다. 툴팁 이벤트로 무엇을하고 싶은지 결정하기위한 beforeHideToolTip은 없습니다.

리스너를 추가하면 도움이되지 않는 이유는 무엇입니까? 그냥 추가 된 것입니다. 다른 리스너도 실행됩니다.

관련 문제