GWT-处理表头在另一个类中单击

时间:2019-02-13 03:10:17

标签: java gwt datatable

我有一个数据表类,该类在使用table.addclick处理程序处理表头单击的表类中扩展了xDataTable。

  SQSEndpoint:
    Type: AWS::EC2::VPCEndpoint
    Properties:
      ServiceName: !Join 
        - ''
        - - com.amazonaws.
          - !Ref 'AWS::Region'
          - .sqs
      SubnetIds:
        - !Ref PrivateSubnet
      VpcId: !Ref 'VPC'
      VpcEndpointType: Interface
      SecurityGroupIds:
        - !Ref PrivateSubnetInstanceSG # has to allow traffic from your VPC
      PrivateDnsEnabled: true

在我的saveLoadMenu类中,我正在使用表格类。

 protected void addSortClickHandler() {
    table.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent ev) {

在此类中,我需要能够绑定该click事件,因此,如果我单击标题并触发onClick,它将回调saveLoadMenu类。

这是表类的一部分

dataTable = new xSortableDataTable<SavedQuote>() {
            protected void onSelectionChanged() {
                if(getSelectedItem() != null) {
                    okButton.setEnabled(true);
                    if(deleteButton!=null) {
                        deleteButton.setEnabled(true);
                    }
                } else {
                    okButton.setEnabled(false);
                    if(deleteButton!=null) {
                        deleteButton.setEnabled(false);
                    }

                }
            }

        };

我不能失去saveLoadMenu类的范围。由于它已经使用传递的面板等创建。有没有办法处理表onclick并回调类?

这可能吗?

更新

我能够做到。我创建了一个抽象类来处理onClick() 我将发布代码,因为它可能会对其他人有所帮助。

public class xSortableDataTable<ItemType> extends xDataTable<ItemType> {

private boolean lastSortWasReverse = false;
private List<Integer> sortableColumns = new ArrayList<Integer>();
private String sortAscImage = "common/image/datatable/uparrow.gif";
private String sortDescImage = "common/image/datatable/downarrow.gif";
private int lastSortedColumn;
private AcceptanceCallback acceptanceCallback;

public xSortableDataTable() {
    super();
   addSortClickHandler();
}


protected void addSortClickHandler() {
    table.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent ev) {
            HTMLTable.Cell c = table.getCellForEvent(ev);
            if (c != null) {

   //handle the callback to the saveLoadMenu class
            }
        }
    });
    } 

在处理onClick的表类中

public abstract class AcceptanceCallback {

public void onOK(){}
public void onCancel(){}

}

然后在设置表格的类中

public ManageQuoteSortableDataTable(AcceptanceCallback acceptanceCallback) {
    super();
    this.acceptanceCallback = acceptanceCallback;
}


protected void addSortClickHandler() {
    table.addClickHandler(new ClickHandler() {
        public void onClick(ClickEvent ev) {

            HTMLTable.Cell c = table.getCellForEvent(ev);
            if (c != null) {
                if (c.getRowIndex() == 0 && isColumnSortable(c.getCellIndex())) {
                    acceptanceCallback.onOK();
                }
            }
        }
    });
}

0 个答案:

没有答案