首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >GWT: CellBrowser没有显示在组合中

GWT: CellBrowser没有显示在组合中
EN

Stack Overflow用户
提问于 2014-06-13 23:46:58
回答 1查看 248关注 0票数 0

拜托,我需要你的帮助。我用UiBinder创建了一个从数据库中填充的UiBinder。问题是我无法使用InitWidget方法显示它。但是,如果我直接将它附加到RootPanel (使用指令: RootPanel.get().add(cellBrowser);),则会显示它,但它会显示在附加到复合的其他副本上(它会变成一个真正的混乱:/ )。我已经把它放进了一个HTMLPanel中,但是它不起作用。

如何将其附加到组合中并与其他小部件一起显示?(我试过其他面板,但没有起作用)。

这是我的密码:

UiBinder文件:

代码语言:javascript
复制
        <!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
    <ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
        xmlns:g="urn:import:com.google.gwt.user.client.ui" xmlns:c='urn:import:com.google.gwt.user.cellview.client'>
        <ui:style>
        #errors {
            color: red;
        }

        #success {
            color: green;
        }

        .arrondie {
            border: 1px solid black;
            -moz-border-radius: 7px;
            -webkit-border-radius: 7px;
            border-radius: 7px;
            background-color: #FFFFCC;
        }
        </ui:style>
        <g:HorizontalPanel> 

        <g:HTMLPanel>
                <table align="center" id="arrondie">
                    <tr>
                        <td colspan="3" align="center">
                            <div id="errors" align="center"></div>
                            <br />
                            <div id="success" align="center"></div>
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <g:Label text="Unit's family:" />
                        </td>
                        <td colspan="2">
                            <g:TextBox width="15em" ui:field="familyName" />
                        </td>
                    </tr>
                    <tr>
                        <td>
                            <g:Label text="Unit:" />
                        </td>
                        <td>
                            <g:TextBox width="15em" ui:field="unitName" />
                        </td>
                        <td>
                            <g:Button ui:field="addUnit" text="Add unit" />
                        </td>
                    </tr>
                    <tr>
                        <td colspan="3" align="center">
                            <g:Button ui:field="submit" text="Submit" />
                        </td>
                    </tr>
                </table>
                </g:HTMLPanel>

                <g:HTMLPanel> 
                    <c:CellBrowser defaultColumnWidth='300' ui:field='cellBrowser' />
                </g:HTMLPanel> 
            </g:HorizontalPanel>
    </ui:UiBinder> 

视图:

代码语言:javascript
复制
    public class UniteViewImpl extends Composite implements UniteView {

        private Presenter presenter;
        private static UniteViewImplUiBinder uiBinder = GWT.create(UniteViewImplUiBinder.class);
        private ListDataProvider<FamilleUniteProxy> dataProvider;

        interface UniteViewImplUiBinder extends UiBinder<Widget, UniteViewImpl> {
        }

        @SuppressWarnings("deprecation")
        public UniteViewImpl() {
            dataProvider = new ListDataProvider<FamilleUniteProxy>(
                    new ArrayList<FamilleUniteProxy>());
            TreeViewModel model = new CustomTreeModel(dataProvider);
            cellBrowser = new CellBrowser(model, null);
            cellBrowser.setKeyboardSelectionPolicy(KeyboardSelectionPolicy.ENABLED);
            cellBrowser.setHeight("200");
            cellBrowser.setWidth("630");
            RootPanel.get().add(cellBrowser); // If I delete this line, the cellBrowser is not displayed
            initWidget(uiBinder.createAndBindUi(this));
        }


        @UiField
        TextBox familyName;

        @UiField
        TextBox unitName;

        @UiField
        Button addUnit;

        @UiField
        Button submit;

        @UiField(provided = true)
        CellBrowser cellBrowser;

        public UniteViewImpl(String firstName) {
            initWidget(uiBinder.createAndBindUi(this));
        }

        @Override
        public void setPresenter(Presenter presenter) {
            this.presenter = presenter;
        }

        public void updateProvider(List<FamilleUniteProxy> familles) {
            dataProvider.setList(familles);
            dataProvider.refresh();
        }

        @UiFactory
        public CellBrowser getCellBrowser() {
            return cellBrowser;
        }
    }

TreeViewModel类:

代码语言:javascript
复制
    class CustomTreeModel implements TreeViewModel {

        private ListDataProvider<FamilleUniteProxy> dataProvider ;

        public CustomTreeModel(ListDataProvider<FamilleUniteProxy> dataProvider) {
            this.dataProvider = dataProvider;
        }

        public <T> NodeInfo<?> getNodeInfo(T value) {
            if (value == null) {
                Cell<FamilleUniteProxy> cell = new AbstractCell<FamilleUniteProxy>() {
                    @Override
                    public void render(Context context, FamilleUniteProxy value,
                            SafeHtmlBuilder sb) {
                        sb.appendEscaped(value.getIntituleFamilleUnite());
                    }
                };

                return new DefaultNodeInfo<FamilleUniteProxy>(dataProvider, cell);

            } else if (value instanceof FamilleUniteProxy) {
                ListDataProvider<UniteProxy> dataProvider = new ListDataProvider<UniteProxy>(
                        ((FamilleUniteProxy) value).getUnites());
                Cell<UniteProxy> cell = new AbstractCell<UniteProxy>() {
                    @Override
                    public void render(Context context, UniteProxy value,
                            SafeHtmlBuilder sb) {
                        if (value != null) {
                            sb.appendEscaped(value.getIntituleUnite());
                        }
                    }
                };
                return new DefaultNodeInfo<UniteProxy>(dataProvider, cell);
            }
            return null;
        }

        public boolean isLeaf(Object value) {
            if (value instanceof UniteProxy) {
                return true;
            }
            return false;
        }
    }

我希望一切都很清楚,非常感谢。

EN

回答 1

Stack Overflow用户

发布于 2014-06-16 18:17:55

我找到了答案。它的宽度和高度必须以像素(200 be和630 be)为单位。希望能对某人有所帮助:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24215205

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档