2013-10-13 37 views
-1

所以我在MytableModel創建方法如何更新jtable?實現setValueAt?

public void removeRow(int row) { 

      if (getSelectedUser(row) != null) { 
       Authorisation.userMap.remove(getSelectedUser(row).getName()); 
       list.remove(getSelectedUser(row)); 
       System.out.println(list); 
       Registration.writeToFile(); 
      } 

      fireTableRowsDeleted(row, row); 
      fireTableDataChanged(); 
     } 

然後在外部類我創建

public void deleteFromTable() { 

     delete.addActionListener(new ActionListener() { 

      @Override 
      public void actionPerformed(ActionEvent e) { 
       int index = usersTable.getSelectedRow(); 
       model.removeRow(index); 
      } 
     }); 
    } 

並且在其它類的方法調用作爲

AdminFrame af = new AdminFrame(frame); 
af.deleteFromTable(); 

從ArrayList和刪除所選擇的行之前表不更新。怎麼了?

+1

什麼問題你不顯示代碼的想法(最好在一個SSCCE的形式) – kleopatra

+0

我會注意到 – SorcerOK

回答

0

當我刪除表中的行,所以我從ArrayList中刪除記錄,

所有更新應做的TableModel。所以你需要在TableModel中創建一個類似removeRow(....)的方法。該方法將做兩件事情:

  1. 從ArrayList中刪除數據
  2. 調用fireTableRowsDeleted(...)

或者更簡單的方法是使用完成大部分的代碼Row Table Model爲你。您只需擴展該類即可實現getValueAt()和setValueAt()方法,如JButtonTableModel.java示例所示。

即使您決定不使用RowTableModel它會給你的如何實現removeRow(...)方法在你的TableModel

+0

我試過了,但不是單詞。我上面描述過的一樣 – SorcerOK

+0

@SorcerOK,你試過了麼?如果你按照我上面的建議,那麼它會工作。無論你做了什麼,你都沒有做好。你還沒有發佈你的'SSCCE',所以我們真的無法幫助,因爲我們只是在猜測。 – camickr

+0

create方法removeRow(int rowindex) - 行索引= getSelectedRow。使用fireTableRowsUpdated(rowIndex)。但是從arrayList中刪除的數據和表不會更新。怎麼了? – SorcerOK