簡體   English   中英

如何更新表格模型多行列?

[英]How can i update table model multiple row columns?

tablemodel中有3行。每行包含9列(o-8)。我想更新每一行的最后一列...但現在我只能更新第一行最后一列...請幫助..

   ` SAVE=new JButton("SAVE");
     SAVE.addActionListener(new java.awt.event.ActionListener() {  
      public void actionPerformed(java.awt.event.ActionEvent e) {  
      String Status=null ;
      DbUtility ViewAbsenties=new DbUtility();
      ViewAbsenties. loadDriver();
      ViewAbsenties.connect();
      TableModel tm;
      tm = table3.getModel();
      int i = table3.getRowCount();
      System.out.println("row count"+i);

          try{
            while(i!=0){
              Status   =(String) tm.getValueAt(0,8);
              String Employeeid = (String) tm.getValueAt(i,0);
              System.out.println("Status: " + Status);
              System.out.println("Employeeid: " + Employeeid);
              ViewAbsenties.executeUpdateQuery2(Status,Employeeid);
              System.out.println("i"+i);
               i=i-1;

                  }}
            catch (Exception e5) {

                }
          });   

你應該用

Status   =(String) tm.getValueAt(i,8);
String Employeeid = (String) tm.getValueAt(i,0);

代替

Status   =(String) tm.getValueAt(0,8);
String Employeeid = (String) tm.getValueAt(0,0);

getValueAt中的第一個參數是rowIndex,您應該傳遞要更新的行的索引,但只能在循環中更新第0行。

我決定總結一下我在評論中提到的觀察結果。

您的代碼有幾個問題

  • 在相同的循環周期中,你調用i++i=i-1 ,這使得循環的變量是不變的,所以你的循環是無窮無盡的(你已經修復了)
  • 你還在調用tm.getValueAt(0,8) 第一個參數是rowIndex ,第二個是columnIndex 因此,對於每次迭代,您仍然使用第一行,而不是使用當前行。
  • Java通常將模型和數組從0索引到length - 1但是從length1迭代。 所以你需要將變量i降低1

有固定的代碼:

int i = table3.getRowCount() - 1;
while( i >= 0 ){

          Status = (String) tm.getValueAt( i, 8 );
          String Employeeid = (String) tm.getValueAt( i, 0 );

          System.out.println( "Status: " + Status );
          System.out.println( "Employeeid: " + Employeeid );

          ViewAbsenties.executeUpdateQuery2( Status, Employeeid );

          System.out.println( "i" + i );
          i = i - 1;
}

注意:無論如何,我的一些觀察結果可以改善你的代碼風格:

  • 上面的例子是for循環的確切用例
  • 基於Java約定的變量名稱應以非大寫字母開頭。

     for ( int i = 0; i < table3.getRowCount(); ++i ) { status = (String) tm.getValueAt( i, 8 ); String employeeid = (String) tm.getValueAt( i, 0 ); System.out.println( "Status: " + status ); System.out.println( "Employeeid: " + employeeid ); ViewAbsenties.executeUpdateQuery2( status, employeeid ); System.out.println( "i" + i ); } 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM