Как установить GWT Flextable первую строку (то есть заголовок) декларативно, используя UiBinder? - PullRequest
2 голосов
/ 25 января 2012

Я хочу, чтобы в моей таблице были следующие статические заголовки столбцов: «Имя», «Фамилия», «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 ]

2 голосов
/ 25 января 2012

Вы не можете установить элементы ячейки FlexTable в Binder UI, возможно, у вас должен быть свой собственный виджет, который отображает tr и td.Например, как объяснено здесь: строка таблицы GWT как UiBinder

1 голос
/ 11 июля 2012

когда вы объявляете provider = true, связыватель пользовательского интерфейса не создает экземпляр объекта, вам нужно скопировать его в свой класс Java правильный код:

public PersonViewImpl(){
    // enter code here
    personTable = new FlexTable();
    personTable.setText(0, 0, "Name");
    personTable.setText(0, 1, "Surname");
    personTable.setText(0, 2, "DOB");
}
0 голосов
/ 17 августа 2013

Отсутствует 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
    }
}
...