2011-03-07 2 views
1

위젯을 추가 할 때 탭 자체를 자동으로 설정하는 사용자 지정 TabLayoutPanel을 구현하고 싶습니다. 탭 닫기와 같은 사용자 지정 동작 포함).인수가있는 GWT UiConstructor, 클래스에는 적절한 setter 메서드가 없습니다.

CustomTabPanel.java와 함께 CustomTabPanel.ui.xml을 만들었습니다. UI 디자인은 단순히 TabLayoutPanel을 포함하며 코드 부분은 필요한 일부 기능을 제공합니다. TabLayoutPanel과 동일한 2 개의 인수를 취하는 생성자가 있는데, 일반 TabLayoutPanel과 마찬가지로 UI 디자인 모드에서 전달하려고합니다. 내가 시작하고 브라우저에서 웹 응용 프로그램을 테스트 할 때 내가 다음 다른 .ui.xml 파일 에서 사용자 지정 복합 위젯을 사용하지만이

public class CustomTabPanel extends Composite{ 
    /* ... here all the uiBinder things 
     already written by my eclipse plugin */ 

    @UiField(provided=true) 
    TabLayoutPanel tabPanel; 

    public @UiConstructor CustomTabPanel(double barHeight, Unit barUnit){ 
     tabPanel = new TabLayoutPanl(barHeight, barUnit); 
     initWidget(uiBinder.creatAndBindUi(this)); 
    } 

처럼 보인다, 나는 다음과 같은 오류 얻을 :

Class CustomTabPanel has no appropriate setBarUnit() method. Element <my:ClosableTabPanel barHeight='2' barUnit='EM' ui:field='closablepanel'>

나는 지침을 따라 http://code.google.com/intl/fr/webtoolkit/doc/latest/DevGuideUiBinder.html#Using_a_widget을 읽었습니다. 나는 뭔가를 놓친 것 같지만 그것이 무엇인지 알 수 없다.

또한 파생 된 class ExtendedTabLayoutPanel extends TabLayoutPanel{...}을 만들고 인수를 사용하여 생성자를 구현하여 상속을 시도했습니다. 이로 인해 런타임에 다른 오류가 발생합니다.

Line xx: Type mismatch: cannot convert from TabLayoutPanel to ExtendedTabLayoutPanel

희망이 있습니다 ... 곧 읽어 보겠습니다.

답변

4

동일한 문제가있었습니다. 인수의 순서는 어떻게 든 중요하다는 것이 밝혀졌습니다. http://code.google.com/p/google-web-toolkit/issues/detail?id=5272

주문할 때 열거 형 변환에 대해 걱정할 필요가 없습니다. 나는 지금이 : 나는 인수에 필요한 순서가 다른 배포를 통해 강력 궁금

<v:FancyTabLayoutPanel barUnit="EM" barHeight="2.0"></v:FancyTabLayoutPanel> 

:

public @UiConstructor FancyTabLayoutPanel(Unit barUnit, double barHeight) {...} 

... 그리고 내 .ui.xml 파일?

+0

모든 것이 단위와 첫 번째 인수로 잘 작동합니다. –

0

문제는 com.google.gwt.dom.client.Style.Unit이 열거 형이라는 사실과 관련이있을 수 있습니다. 이 문제를 해결해야하는 또 다른 방법은 barUnit을 string으로 변경 한 다음 Unit.valueOf (barUnit)를 사용하여 적절한 열거 형 값을 검색하는 것입니다. 이것은 또한 전달되는 유닛 이름을 적절히 오류 검사 할 수있는 기능을 제공합니다.

UiBinder의 상속 문제는 실제로 패치되었지만 GWT에 공식적으로 추가되지 않은 known issue입니다.

+0

문자열로 전달 된 단위로도 오류가 유지됩니다. 하지만 Unit 또는 String으로 전달 될 때 잘 작동하지만 FIRST 인수로 사용됩니다. 그것이 z0r이 말한 버그와 일치하는 것 같습니다. –