如何使用UiBinder以声明方式设置GWT Flextable第一行(即标题)?

时间:2012-01-25 04:47:48

标签: java gwt uibinder flextable

我希望我的表具有以下静态列标题:“Name”,“Surname”,“DOB”, 但是我想在* .ui.xml中声明它们(而不是在代码中)。

现在,我正在通过以下代码来实现:

public PersonViewImpl extends Composite implements PersonView {
    /*Lots of code removed for clarity*/

    @UiField (provided = true) FlexTable personTable;

    public PersonViewImpl(){
        personTable.setText(0, 0, "Name");
        personTable.setText(0, 1, "Surname");
        personTable.setText(0, 2, "DOB")    
    }
}

我在PersonView.ui.xml中有这个

<g:FlexTable ui:field="personTable" />

我用谷歌搜索了几个小时,但仍然没有去。

3 个答案:

答案 0 :(得分:2)

您无法在UI Binder中设置FlexTable的单元格元素,可能您应该拥有自己的自定义窗口小部件,它呈现tr和td。例如,如此处所述:GWT table row as UiBinder

答案 1 :(得分:1)

当你声明provider = true时,ui binder不是对象的实例,你需要在java类中实例化它 正确的代码是:

public PersonViewImpl(){
    // enter code here
    personTable = new FlexTable();
    personTable.setText(0, 0, "Name");
    personTable.setText(0, 1, "Surname");
    personTable.setText(0, 2, "DOB");
}

答案 2 :(得分:0)

在第一行构造函数中缺少initWidget( uiBinder.createAndBindUi(this) );

试试这个:

public class PersonViewImpl extends Composite implements PersonView {
    /*Lots of code removed for clarity*/

    @UiField (provided = true) FlexTable personTable;

    public PersonViewImpl(){
        initWidget( uiBinder.createAndBindUi(this) );
        // TODO your code
    }
}