繁体   English   中英

GWT 2:如何将Button添加到CellTable的标题中?

[英]GWT 2: how can I add Button to the CellTable's header?

我的任务是创建一个带有控件的表以添加新行。 这个典型的控件应包括相应的TextEdits集和一个“添加新行”按钮。

我使用CellTable。

我可以仅在某些面板中组合按钮和必要字段来单独创建此“添加小部件”,但是我想尝试将其绑定到表。 我想使用CellTable进行制作。 为此,我尝试利用CellTable的标题。 我创建了一个页眉,并添加了EditCellText和ButtonCell。 我有两个问题:

  • 该按钮未显示。 而是显示了由getValue()方法返回的值。
  • 我不知道如何处理该按钮的单击。

[1]最后,第一个问题是: 如何将按钮添加到CellTable的标题中,以及如何处理该按钮的单击? 该按钮应该看起来像一个按钮,而不仅仅是单击区域。

[2]也许还有另一种方式可以完成我的任务。 是否可以在不同行包含不同按钮的地方创建CellTable? 即第一行按住按钮“添加”,所有其他行按住按钮“删除”。 GWT可以做到吗?

[3]还有一个问题。 目前,我使用Java代码描述了CellTable的结构。 即我在创建父窗口小部件时手动创建并添加列和标题对象。 是否可以用XML表示CellTable的结构,即使用某些mySpecialCellTable.ui.xml文件?

public static class BtnHeader extends Header<String>{

    public BtnHeader(ButtonCell cell) {
        super(cell);

    }
     @Override
       public void onBrowserEvent(Context context, Element elem, NativeEvent nativeEvent)
       {
          int eventType = Event.as(nativeEvent).getTypeInt();
          if (eventType == Event.ONCLICK)
          {
             nativeEvent.preventDefault();
            updateHeader();
          }
       }
    @Override
    public String getValue() {
        return "Click!";
    }
    protected void updateHeader() {
        // TODO to redefine in a defiant class

    }

 }

在你的代码中

BtnHeader header = new BtnHeader(new ButtonCell()){
                @Override
                protected   void updateHeader(){
                    // Actions when clicking button
                }

cTable.addColumn(column, header);

要在表格中显示按钮,可以使用ButtonCell:

Column<MyObject, String> delete = new Column<MyObject, String>(new ButtonCell()) {

            @Override
            public String getValue(final MyObjectobject object) {
                return "delete";
            }
        };

        delete.setFieldUpdater(new FieldUpdater<MyObject, String>() {

            @Override
            public void update(final int index, final MyObjectobject object, final String value) {

                myActivity.delete(object); // to whatever should happen if button is clicked
            }
        });

这也应该回答第二个问题。 据我所知,您必须在java类中添加列。 在uibinder文件中,您只能添加整个单元格表。

<p1:CellTable ui:field="table"></p1:CellTable>

希望这可以帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM