2011-03-31 1 views
1

임 GWT로 작업하고 나만의 버튼을 만들기 시작합니다. 베스트 프랙티스에 대해 읽었으며 Widget 대신 Composite를 확장해야합니다. 하지만 왜? 여기 Stackoverflow에서 GWT 위젯 일부 브라우저에 대한 특별한 동작을 읽었지만 내가 위젯을 확장하면 동작이 손실되지 않는다는 것인가? 요점은, 나는 다른 스타일을 가진 버튼을 원한다는 것이다. 그리고 두 번 이상 필요하기 때문에 코드를 항상 반복하고 싶지 않습니다. 그러나 Composite를 확장하면 setClickHandler (...)와 같은 것들을 전달하는 Button과 같은 메소드를 제공해야합니다. 이것은 많은 오버 헤드처럼 보입니다.위젯 대신 GWT 확장 컴포지트

+2

그냥 궁금가 ... 마십시오 당신이 실제로 필요 하위 클래스 버튼? 서브 클래스를 결정하기 전에 setStyleName/stylePrimaryName 및 유사한 CSS 접근자를 시도 했습니까? 왜 작동하지 않았습니까? –

+0

아니요, 저는 항상 setStyleName :-)을 반복하고 싶지 않습니다. – lrxw

+1

이 경우 서브 클래 싱은 브라우저 호환성을 손상시킬 수있는 렌더링 방법을 오버라이드하지 않으므로 완벽합니다. –

답변

4

복합체를 사용하여 복잡한 위젯을 만들고 싶습니다. Composite 클래스를 사용하면 위젯 내부에있는 다른 기존 위젯을 사용할 수 있습니다.

버튼에 복잡성을 추가하고 싶지 않기 때문에 단추 위젯을 하위 클래스로 지정하십시오. 복합 또는 버튼 (악화) 다음과 같이 다른 클래스 (버튼 ..) 확장 없습니다 당신은 클래스를 만들 수 있습니다 필요하지 않습니다 확장

+0

고마워, 그게 내가 생각했던거야. 좋은 사람이 그것을 확인 :) – lrxw

1

:

public class MyButton { 
    Button btn= new button("btn"); 
    VerticalPanel vpanel= new VerticalPane();/* or HorizontalPanel ..*/ 
    /* add whatever you need */ 
public MyButton(){ 
    /* add style to button and or to vpanel use btn.setStyleName("style-name") */ 
    vpanel.add(btn) 
} 
public Button getButton(){ return btn; }/* it allows you get button to add ClickHandlers..*/ 
public Widget asWidget() { return vpanel; } /* Widget because mybe you ll need HozonalPanel */ 
/* you can add more features: ... */