2009-05-31 11 views
5

나의 현재 프로세스는 다음과 같다 :사용자 정의 위젯에 대한

  1. 내 위젯 클래스 만들기 - 복합 확장;
  2. 이 위젯에 대한 수신기 인터페이스를 생성하십시오.
  3. 위젯에 대한 개인 내부 클래스 인 리스너 컬렉션 인터페이스를 만듭니다.
  4. 위젯에서 add/removeListener 메소드를 생성하십시오.
  5. 위젯 내부에서 리스너의 이벤트를 시작합니다.

내 리스너가 onEntityDisplayRequested(Entity entity)과 같은 세분화 된 이벤트를 발생 시키므로 주식 리스너를 사용할 수 없습니다.

위젯에 대한 결합이 낮고 재사용이 가능하지만 이는 매우 장황합니다. 커스텀 위젯의 디자인을 처리하는 더 좋은 방법이 있습니까?

답변

3

새 위젯마다 별도의 수신기 인터페이스가 필요하지 않습니다. 예 : ClickListener은 다양한 위젯 클래스에서 사용됩니다. 분명히 일부 맞춤 위젯에는 새 수신기 유형이 필요하지만 이는 자동이 아니어야합니다.

+0

답변 해 주셔서 감사합니다. 맞춤 이벤트를 발생시키기 위해 이러한 리스너를 사용하고 있습니다. onEntityDisplayRequested (Entity e), 그래서 주식 리스너를 사용할 수 없습니다. –

+0

지금까지만 - 가장 좋은 대답입니다. 우승자! –

2

나는 자바가 얼마 전에 같은 문제에 직면했다고 생각하고 해결책은 PropertyChange 이벤트를 갖는 것이었다. 여기에는 - PropertyChangeListener - PropertyChangeSupport라는 이전 소스, 속성 이름 및 이전 + 새 값이 포함 된 PropertyEvent가 있습니다. PropertyChangeSupport에는 이벤트 발생을 위임 할 수 있으며 리스너 등록 및 등록 해제도 있습니다.

약간의 특수성 (이벤트는 이름으로 문자열과 일치 함)을 잃지 만 미세한 이벤트를 발생시키고 일부 외부 클래스를 지원할 수 있습니다.

나는 이것을 GWT에서 광범위하게 사용하지 않았기 때문에 효율성 측면에 대해서는 언급 할 수 없다.

관련 문제