有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用UiBinder声明性地设置GWT Flextable第一行(即标题)?

我希望我的表具有以下静态列标题:“名称”、“姓氏”、“DOB”, 但我想在*中申报。用户界面。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")    
    }
}

我的个人观点是这样的。用户界面。xml

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

我在谷歌上搜索了几个小时,但还是没找到


共 (3) 个答案

  1. # 1 楼答案

    构造函数的第一行缺少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
        }
    }
    
  2. # 2 楼答案

    当您声明provider = true时,ui绑定器不会实例化该对象,您需要在java类中实例化它 正确的代码是:

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

    您不能在UI活页夹中设置FlexTable的单元格元素,可能您应该有自己的自定义小部件来呈现tr和td。例如,就像这里解释的:GWT table row as UiBinder