0

SelectionCellまたはを表示するかどうかを決定するカスタム セルを作成しましたTextCell。レンダリングの場合、メソッドをSelectionCell起動できません。setFieldUpdater

以下のコード...

private class CustomTypeCell extends AbstractCell<String>
{
    SelectionCell selectCell = new SelectionCell(cardMnemonics);
    TextCell textCell = new TextCell();

    @Override
    public void render(
            Context context,
            String value, SafeHtmlBuilder sb)
    {
        if (value != null)
        {
            textCell.render(context, value, sb);
        }
        else
        {
            selectCell.render(context, "", sb);
        }

    }
}


    private class CustomTypeColumn extends Column<Object, String>
{

    public CustomTypeColumn(CustomTypeCell cell)
    {
        super(cell);
    }

    @Override
    public String getValue(Object object)
    {
        return object.getStringValue();
    }
}

を使用して実装...

CustomTypeCell cell = new CustomTypeCell();
CustomTypeColumn customCol = new CustomTypeColumn(cell);

customCol.setFieldUpdater(new FieldUpdater<Object, String>()
    {
        public void update(int index, Object object, String value)
        {
            object.setStringValue(value);
            // perform action           }
    });
cellTable.addColumn(customCol, "Custom Column");

で標準の列を使用すると、これは正常に機能しSelectionCellます。

4

1 に答える 1

0

レンダリングだけでは不十分です。イベント処理を適切なセル実装に委譲することも必要です。if/else 構造を に追加しonBrowserEvent、 で適切なイベントをリッスンするようにしてくださいgetConsumedEvents
おそらく も実装する必要がありますresetFocus

CompositeCellおそらく、コードからインスピレーションが得られるでしょう。

于 2012-08-30T12:42:48.087 に答える