2011-12-04 26 views
13

Tôi đã phải đối mặt với một nhiệm vụ để tạo widget tùy chỉnh, nó có hành vi container - 3 bảng bên trong. Và tôi muốn sử dụng nó theo cách UiBinder chung chung như CustomButtongwt tùy chỉnh widget với cấu hình con yếu tố trong UIBinder (như CustomButton)

<u:MyWidget> 
    <u:image><g:Image .../></u:image> 
    <u:mainContent><g:Panel.../></u:mainContent> 
</u:MyWinget> 

Có thể để xác định rằng yếu tố con tùy chỉnh bằng cách nào đó hoặc có thể nó là điều được xác định trước trong UIBuilder?

Cảm ơn trước

Trả lời

16

cách chính xác để làm điều đó là sử dụng UiChild chú thích.

public class MyWidget extends Composite { 
    public MyWidget() { 
    // ... 
    } 

    @UiChild(tagname = "image") 
    void addImage(Image image) { 
    // ... 
    } 

    @UiChild(tagname = "mainContent") 
    void addMainContent(Widget contentWidget) { 
    } 
} 
+0

@Thomas - Nhưng làm thế nào để bạn làm điều này một cách tổng quát? Ví dụ: nếu tất cả các bảng con thực hiện myInnerPanel, làm cách nào để tôi có thể truy cập vào con đó? Các tài liệu nói rằng tên thẻ này phải khớp chính xác với tên phương thức. Có một công việc xung quanh? –

+2

okay, làm cho nó hoạt động. Miễn là loại generic của tôi, nói MyAbstractWidget được mở rộng bởi con của thẻ 'customtag', sau đó trong phương thức @ UiChild, tôi có thể upcast từ Widget thành MyAbstractWidget mà không có vấn đề gì. Bằng cách đó, phương thức @ UiChild và tiện ích con của phụ huynh có thể xử lý bất kỳ con tương lai được tạo đúng nào của 'thẻ tùy chỉnh'. –

Các vấn đề liên quan