Java 如何从GWT中的动态FlexTable中获取行值?

Java 如何从GWT中的动态FlexTable中获取行值?,java,gwt,flextable,Java,Gwt,Flextable,我试图开发一个应用程序,用jdbc从数据库动态创建一个flex表。我想实现两种方法,一种是更新行值,另一种是通过每行插入两个按钮来删除当前行。问题是我无法获取当前行的值 创建FlexTable的FishTable方法 public void FishTable(){ if(service == null){ service = GWT.create(Service.class); } service.getFishes(FishTableCallBac

我试图开发一个应用程序,用jdbc从数据库动态创建一个flex表。我想实现两种方法,一种是更新行值,另一种是通过每行插入两个按钮来删除当前行。问题是我无法获取当前行的值

创建FlexTable的FishTable方法

public void FishTable(){
    if(service == null){
        service = GWT.create(Service.class);
    }

    service.getFishes(FishTableCallBack);
}
AsyncCallback FishTableCallBack=新建AsyncCallback(){

@覆盖
失败时的公共无效(可丢弃){
String details=catch.getMessage();
系统输出打印项次(详细信息);
}
@凌驾
成功时的公共无效(FishTable结果){
table.removeAllRows();
tablePanel.clear();
表.setText(0,0,“id”);
表2.setText(0,1,“鱼”);
表1.setText(0,2,“价格”);
表1.设置单元填充(6);
table.getCellFormatter().addStyleName(0,0,“header1_3”);
table.getCellFormatter().addStyleName(0,1,“header2”);
table.getCellFormatter().addStyleName(0,2,“header1_3”);
tablePanel.add(表);
for(int i=0;i
updateBtn处理程序中的代码不起作用,我从最后一行获取值。我尝试了index=table.getCellForEvent(event).getRowIndex()-1来获取当前行,但无法在updateBtn处理程序中获取列0的值。我想将这些值发送到数据库。那么,如何从单击这些按钮的行中获取值呢

UpdateFish和DeleteFish方法:

public void DeleteFish(String id){
    if(service == null){
        service = GWT.create(Service.class);
    }

    service.deleteFish(id, deleteFishCallBack);
}

public void UpdateFish(String fishId , String fishName , String fishPrice){
    if(service == null){
        service = GWT.create(Service.class);
    }

    service.updateFish(fishId , fishName , fishPrice , updateFishCallBack);
}

AsyncCallback<DeleteFish> deleteFishCallBack = new AsyncCallback<DeleteFish>() {

    @Override
    public void onSuccess(DeleteFish result) {          
        FishTable();
    }

    @Override
    public void onFailure(Throwable caught) {
        String details = caught.getMessage();

        System.out.println(details);

    }
};

AsyncCallback<UpdateFish> updateFishCallBack = new AsyncCallback<UpdateFish>() {

    @Override
    public void onSuccess(UpdateFish result) {
        FishTable();
    }

    @Override
    public void onFailure(Throwable caught) {
        String details = caught.getMessage();

        System.out.println(details);

    }
};
public void DeleteFish(字符串id){
if(服务==null){
service=GWT.create(service.class);
}
service.deleteFish(id,deleteFishCallBack);
}
public void UpdateFish(字符串fishId、字符串fishName、字符串fishPrice){
if(服务==null){
service=GWT.create(service.class);
}
updateFish(fishId、fishName、fishPrice、updateFishCallBack);
}
AsyncCallback deleteFishCallBack=新建AsyncCallback(){
@凌驾
成功时公共无效(DeleteFish结果){
FishTable();
}
@凌驾
失败时的公共无效(可丢弃){
String details=catch.getMessage();
系统输出打印项次(详细信息);
}
};
AsyncCallback updateFishCallBack=新建AsyncCallback(){
@凌驾
成功时的公共void(UpdateFish结果){
FishTable();
}
@凌驾
失败时的公共无效(可丢弃){
String details=catch.getMessage();
系统输出打印项次(详细信息);
}
};
更换

int row = table.getRowCount();

然后呢

deleteBtn.addClickHandler(new ClickHandler() {

    @Override
    public void onClick(ClickEvent event) {
        TextBox tb = (TextBox) table.getWidget(row - 1, 0);
        DeleteFish(tb.getText());
    }
});

它不起作用。我认为table.getText()方法有问题,因为我试图打印这个值,但它什么也不打印。我还将此行更改为DeleteFish(table.getText(row-1,0));因为我想要第一列。您正在将TextBox小部件放入FlexTable中。因此,您必须使用getWidget将文本框取回。然后在文本框中使用getText------用这些更改更新了我的答案
final int row = table.getRowCount();  
deleteBtn.addClickHandler(new ClickHandler() {

    @Override
    public void onClick(ClickEvent event) {
        TextBox tb = (TextBox) table.getWidget(row - 1, 0);
        DeleteFish(tb.getText());
    }
});