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

Kut*_*ach 0 java gwt header celltable

我的任务是创建一个带有控件的表来添加新行.这个典型的控件应该包含相应的TextEdits和一个"添加新行"按钮.

我使用CellTable.

我可以单独创建这个"添加小部件",只需在某个面板中组合按钮和必要的字段,但我想尝试将其绑定到表中.我想用CellTable来制作它.为此,我尝试使用CellTable的标题.我创建了一个Header并添加了EditCellText和ButtonCell.我有两个问题:

  • 按钮未显示.而是显示getValue()方法返回的值.
  • 我不知道如何处理该按钮上的点击.

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

[2]可能还有另一种方法可以完成我的任务.是否可以创建CellTable,其中不同的行包含不同的按钮?即第一行保持按钮"添加",所有其他行按住"删除"按钮.GWT可以这样做吗?

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

小智 6

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

    }

 }
Run Code Online (Sandbox Code Playgroud)

在你的代码中

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

cTable.addColumn(column, header);
Run Code Online (Sandbox Code Playgroud)