1
SWT.MouseUp 및 SWT.MouseDown 이벤트에서 셸에 수신기를 연결했지만 handleEvent 메서드가 실행되지 않습니다. 나는 창문의 여러 위치에서 클릭을 시도했지만 아래의 코드에서 System.out.println (..)을 얻지는 않습니다 ...SWT.MouseUp에 대한 셸에 리스너를 추가 할 수 없습니다.
여기에 오류가 있습니까?
감사합니다.
//c is a Composite.
final Listener l = new Listener(){
public void handleEvent(Event event) {
System.out.println("Got event. "+event);
Rectangle rect = c.getBounds();
if (rect.contains(event.x, event.y)){
if((Boolean)c.getData("selected")){
c.setData("selected", Boolean.FALSE);
}else{
c.setData("selected", Boolean.TRUE);
}
}
}
};
c.getShell().addListener(SWT.MouseUp, l);
c.getShell().addListener(SWT.MouseDown, l);
c.getShell().addListener(SWT.MouseUp, l);
c.getShell().addListener(SWT.MouseDown, l);
당신이 리스너를 추가를 작성하여
감사
-Pradyumna
감사합니다. 지금 아이디어를 얻었습니다. 그러나 이벤트 (예 : MouseDown)가 해당 컴포지트의 자손에서 발생하면 해지되는 컴포지트에 리스너를 연결할 수있는 방법이 있습니까? – Pradyumna
복합체의'getChildren()'을 반복 해 각각에 리스너를 추가 할 수 있습니다. –
언급 할만한 가치가있는 것은'Display.addFilter (.)'일 수 있습니다 : 당신은 Display의 이벤트 루프에 어떤 이벤트에 대한 알림을받습니다. 이것은 정확히 당신이 요구하는 것이 아니며, 대부분의 경우 이것은 적절한 방법이 아닙니다. 그러나 아주 드문 경우가 있습니다. –