[英]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
。 因此,對於每次迭代,您仍然使用第一行,而不是使用當前行。 0
索引到length - 1
但是從length
到1
迭代。 所以你需要將變量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.