Java GWT-更新面板中的表

Java GWT-更新面板中的表,java,database,gwt,panel,celltable,Java,Database,Gwt,Panel,Celltable,我有一个垂直面板,上面有一张桌子。OnModuleLoad从数据库中获取数据,并将其显示在表中。单击按钮时,我想将列表框中的新数据添加到列表框中。工作正常,但我不知道如何更新表/面板。我现在要做的是创建一个新表来显示数据,但我不能删除第一个表。我是否必须将表格附加到面板才能删除它?事实上,我不喜欢这个解决方案,这就是为什么我想知道是否有一个更新方法或什么 创建表格 public void createTimeTable(){ //Table and Panel -> cre

我有一个垂直面板,上面有一张桌子。OnModuleLoad从数据库中获取数据,并将其显示在表中。单击按钮时,我想将列表框中的新数据添加到列表框中。工作正常,但我不知道如何更新表/面板。我现在要做的是创建一个新表来显示数据,但我不能删除第一个表。我是否必须将表格附加到面板才能删除它?事实上,我不喜欢这个解决方案,这就是为什么我想知道是否有一个更新方法或什么

创建表格

public void createTimeTable(){
        //Table and Panel -> created globally
        //On Load -> get all times which are already booked
        serviceImplURL.getRpcDB().getBookedTimes(username, new AsyncCallback<ArrayList<Times>>() {
            /**
            */
            @Override
            public void onFailure(Throwable caught) {
                // TODO Auto-generated method stub

            }
            /**
            */
            @Override
            public void onSuccess(ArrayList<Times> startList) {
                /**
                */

                    table.setRowCount(startList.size(), true);
                    table.setRowData(0, startList);


                    // Add column to show the start time.
                      TextColumn<Times> startColumn 
                      = new TextColumn<Times>() {
                         @Override
                         public String getValue(Times times) {
                            return Double.toString(times.getStart());
                         }
                      };
                      table.addColumn(startColumn, "Beginn");

                   // Add column to show the pause time.
                      TextColumn<Times> pauseColumn 
                      = new TextColumn<Times>() {
                         @Override
                         public String getValue(Times times) {
                            return Integer.toString(times.getPause());
                         }
                      };
                      table.addColumn(pauseColumn, "Pause in Minuten");

                   // Add column to show the end time.
                      TextColumn<Times> endColumn 
                      = new TextColumn<Times>() {
                         @Override
                         public String getValue(Times times) {
                            return Double.toString(times.getEnd());
                         }
                      };
                      table.addColumn(endColumn, "Ende");



                      //table panel
                      panel.setBorderWidth(1);      
                      panel.setWidth("400");
                      panel.add(table);
                      panel.getElement().setId("mainTable");


                      // Add the widgets to the root panel.
                      RootPanel.get().add(panel);

            }               
        });
public void createtimeline(){
//表和面板->全局创建
//加载->获取所有已预订的时间
serviceImplURL.getRpcDB().getBookedTimes(用户名,新的AsyncCallback(){
/**
*/
@凌驾
失败时的公共无效(可丢弃){
//TODO自动生成的方法存根
}
/**
*/
@凌驾
成功时的公共无效(ArrayList){
/**
*/
table.setRowCount(startList.size(),true);
表.setRowData(0,startList);
//添加列以显示开始时间。
text列startColumn
=新文本列(){
@凌驾
公共字符串getValue(次){
返回Double.toString(times.getStart());
}
};
表.addColumn(startColumn,“Beginn”);
//添加列以显示暂停时间。
TextColumn pauseColumn
=新文本列(){
@凌驾
公共字符串getValue(次){
返回Integer.toString(times.getPause());
}
};
表.addColumn(pauseColumn,“暂停分钟”);
//添加列以显示结束时间。
text列结束列
=新文本列(){
@凌驾
公共字符串getValue(次){
返回Double.toString(times.getEnd());
}
};
表.添加栏(结束栏,“结束”);
//桌板
面板宽度(1);
面板设置宽度(“400”);
面板。添加(表);
panel.getElement().setId(“mainTable”);
//将小部件添加到根面板。
RootPanel.get().add(面板);
}               
});

首先您必须更正代码。您只需要设置数据。对吗?因此无需反复创建表列来更改其中的数据

首先在rpc调用方法之外创建表结构。然后使用表的实例并在其中设置数据

您只需使用以下方法更新datalist

table.setRowCount(startList.size(), true);
table.setRowData(0, startList); 
编辑:

   private void initilaize()
    {

                // Add column to show the start time.
                  TextColumn<Times> startColumn 
                  = new TextColumn<Times>() {
                     @Override
                     public String getValue(Times times) {
                        return Double.toString(times.getStart());
                     }
                  };
                  table.addColumn(startColumn, "Beginn");

               // Add column to show the pause time.
                  TextColumn<Times> pauseColumn 
                  = new TextColumn<Times>() {
                     @Override
                     public String getValue(Times times) {
                        return Integer.toString(times.getPause());
                     }
                  };
                  table.addColumn(pauseColumn, "Pause in Minuten");

               // Add column to show the end time.
                  TextColumn<Times> endColumn 
                  = new TextColumn<Times>() {
                     @Override
                     public String getValue(Times times) {
                        return Double.toString(times.getEnd());
                     }
                  };
                  table.addColumn(endColumn, "Ende");



                  //table panel
                  panel.setBorderWidth(1);      
                  panel.setWidth("400");
                  panel.add(table);
                  panel.getElement().setId("mainTable");


                  // Add the widgets to the root panel.
                  RootPanel.get().add(panel);
     }

    public void createTimeTable(){
            //Table and Panel -> created globally
            //On Load -> get all times which are already booked
            serviceImplURL.getRpcDB().getBookedTimes(username, 
new AsyncCallback<ArrayList<Times>>() {
                /**
                */
                @Override
                public void onFailure(Throwable caught) {
                    // TODO Auto-generated method stub

                }
                /**
                */
                @Override
                public void onSuccess(ArrayList<Times> startList) {
                    /**
                    */
                        table.setRowCount(startList.size(), true);
                        table.setRowData(0, startList);

                }               
            });
private void initilize()
{
//添加列以显示开始时间。
text列startColumn
=新文本列(){
@凌驾
公共字符串getValue(次){
返回Double.toString(times.getStart());
}
};
表.addColumn(startColumn,“Beginn”);
//添加列以显示暂停时间。
TextColumn pauseColumn
=新文本列(){
@凌驾
公共字符串getValue(次){
返回Integer.toString(times.getPause());
}
};
表.addColumn(pauseColumn,“暂停分钟”);
//添加列以显示结束时间。
text列结束列
=新文本列(){
@凌驾
公共字符串getValue(次){
返回Double.toString(times.getEnd());
}
};
表.添加栏(结束栏,“结束”);
//桌板
面板宽度(1);
面板设置宽度(“400”);
面板。添加(表);
panel.getElement().setId(“mainTable”);
//将小部件添加到根面板。
RootPanel.get().add(面板);
}
公众假期时间表(){
//表和面板->全局创建
//加载->获取所有已预订的时间
serviceImplURL.getRpcDB().GetBookedTime(用户名,
新的AsyncCallback(){
/**
*/
@凌驾
失败时的公共无效(可丢弃){
//TODO自动生成的方法存根
}
/**
*/
@凌驾
成功时的公共无效(ArrayList){
/**
*/
table.setRowCount(startList.size(),true);
表.setRowData(0,startList);
}               
});

此创建表方法仅用于获取时间一次…然后我有一个更新方法,当我单击按钮时会调用该方法。目前,我在更新方法中调用CreateThedule方法。但通常我只想更新表,不想再次创建表。像以前一样从数据库接收数据更新表,因为可能是数据被删除或