2014-01-10 2 views
0

SWT 콤보를 사용하고 있습니다. 마우스 다운 이벤트는 처음 클릭 할 때 캘린더 팝업을 표시하고 두 번째 클릭 할 때 팝업을 숨기는 식으로 계속됩니다.SWT 콤보 MouseDown 이벤트가 제대로 트리거되지 않았습니다.

mCombo.addListener(SWT.MouseDown, new Listener() { 
    public void handleEvent(Event event) { 
        showCalendar(); 
    } 
    }); 

텍스트 영역을 클릭 할 때마다 MouseDown 이벤트가 정상적으로 트리거됩니다. 그러나 오른쪽 구석에있는 화살표를 클릭하면 MouseDown 이벤트가 두 번째가 아닌 처음으로 트리거됩니다.

문제를 해결할 수있는 해결책을 알려주십시오.

+0

어떤 플랫폼입니까? SWT 구현은 네이티브 API에 의존하기 때문에 플랫폼이 중요합니다. –

+0

광산은 창문입니다. 7 – yash

+0

@yash 내 대답이 도움이 되었습니까? – Baz

답변

1

먼저이 질문을보십시오 : SWT Listen to Combo close.

Combo은 "닫기 이벤트"이벤트를 지원하지 않습니다. CCombo을 대신 사용할 수있는 경우 SWT.MouseDown을 수신 할 수 있습니다. 화살표에서도 마찬가지입니다.

public static void main(String[] args) 
{ 
    Display display = new Display(); 
    Shell shell = new Shell(display); 
    shell.setLayout(new GridLayout(1, false)); 
    shell.setText("StackOverflow"); 

    CCombo combo = new CCombo(shell, SWT.DROP_DOWN | SWT.READ_ONLY); 
    combo.add("First"); 
    combo.add("Second"); 

    Listener listener = new Listener() 
    { 
     @Override 
     public void handleEvent(Event e) 
     { 
      System.out.println(e); 
     } 
    }; 

    combo.addListener(SWT.MouseDown, listener); 
    combo.addListener(SWT.Selection, listener); 

    shell.pack(); 
    shell.open(); 

    while (!shell.isDisposed()) 
    { 
     if (!display.readAndDispatch()) 
     { 
      display.sleep(); 
     } 
    } 

    display.dispose(); 
} 
관련 문제