2010-11-19 2 views
2

Java 및 SWT를 사용하여 응용 프로그램을 만들고 캔버스에서 작업 영역을 생성했습니다. 캔버스의 특정 영역 (컨트롤)을 마우스로 이동하거나 클릭 할 때 이벤트를 트리거해야합니다. 물론 이것은 MouseMoveEvent를 듣고 마우스의 위치를 ​​수동으로 검사하여 수행 할 수 있습니다. 그러나 SWT가이를 수행하는 더 쉬운 방법을 제공하는지 알고 싶습니다.SWT Canvas는 마우스 이동/클릭 활성 영역을위한 도구를 제공합니까?

감사합니다.

답변

0

감사합니다. 마지막으로 각 컨트롤에 대한 Rectangle 객체의 ArrayList를 만들었습니다. mousemove 이벤트가 발생할 때마다 각 Rectangle을 순환하고 마우스 좌표로 Rectangle.contains()를 호출합니다. 이 솔루션은 매우 체계적으로 밝혀졌습니다. 내 경우

, 제어 이벤트 (그들은 모두 같은 일을) 균일하지만, 사람이 다수의 제어 동작이있는 경우, Rectangle.data는 Command 개체를 포함 할 수 있습니다.

2

내가 아는 한, 자동화 할 수있는 기능이 없습니다. 당신은 마우스 리스너를 등록하고 x & y 수동으로 좌표를 조사해야합니다.

다른 접근 방법은이 Canvas을 둘러싸에 개별 Canvas 개체를 추가 할 수 있습니다. 이렇게하면 개별 컨트롤에 리스너를 추가 할 수 있습니다. 그러나 이것은 더 많은 메모리를 사용하게 될 것입니다 (기본 객체는 버퍼뿐만 아니라 상단의 컨트롤을 가짐) 더 많은 CPU를 사용하게됩니다.

내 개인적인 취향은 첫 번째 기술로 이동합니다. 답 바울에 대한

관련 문제