我有一个简单的gxt窗口:

public class MainWindow extends Window {
    public MainWindow() {
        Label test = new Label("Test");
        add(test);
    }
}


我想从UiBinder描述相同的窗口。这段代码可以完美地工作:

<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
    xmlns:gxt="urn:import:com.extjs.gxt.ui.client.widget">
    <gxt:Window>
    </gxt:Window>
</ui:UiBinder>


但是当我在gxt:Window元素中添加<gxt:Label>Test</gxt:Label>时出现错误:

[ERROR] Found unexpected child element Element <gxt:Label>


我做错了什么?窗口元素有什么期望?

最佳答案

Ext GWT 2.x不支持UiBinder(原因是缺少公共API来在GWT中创建自定义元素解析器:http://code.google.com/p/google-web-toolkit/issues/detail?id=4461)。

您可以添加组件gxt:Windows,仅此而已,您不能在gxt:Window下添加子元素,因为对于任何gxt:Window超类都没有元素解析器。 GWT的面板扩展了GWT的HasWidgets,并且有一个元素解析器:HasWidgetsParser,它为每个子元素调用add()

可以解决此问题,我想这就是他们为Ext GWT 3 beta所做的事情,因为它声称“完全支持UiBinder”,因此您可以尝试一下。

关于java - 如何用UiBinder描述GXT窗口?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8907071/

10-09 13:40