Har gjort en utökning av en JTable. I tabellen visas innehållet som finns i en AccountCollection. När en ändring har gjort i denna så skulle jag vilja ha en metod(reload) som jag kan anropa för att ladda om tabellen. Någon som vet hur jag gör detta??
import java.awt.*;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
class AccountTable extends JPanel {
private JTable table;
private AccountDataModel accountModel;
private AccountCollection theAccounts;
private BankFrame myFrame; //Used to refer to buttons edit and delete via 'setButtonState' function.
AccountTable(AccountCollection theAccounts, BankFrame frame) {
this.theAccounts = theAccounts;
this.myFrame = frame;
setLayout(new BorderLayout());
accountModel = new AccountDataModel();
table = new JTable(accountModel);
//Only allow users to select one account at a time:
table.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
ListSelectionModel rowSM = table.getSelectionModel();
rowSM.addListSelectionListener(new ListSelectionListener() {
public void valueChanged(ListSelectionEvent e) {
if(e.getValueIsAdjusting()) return;
ListSelectionModel listSM = (ListSelectionModel)e.getSource();
if(listSM.isSelectionEmpty()) {
myFrame.setButtonState(false);
} else {
myFrame.setButtonState(true);
}
}
});
JScrollPane scrollPane = new JScrollPane(table);
table.setPreferredScrollableViewportSize(new Dimension(500, 80));
add(scrollPane, BorderLayout.CENTER);
}
public void reload() {
//???
}
class AccountDataModel extends AbstractTableModel {
String columns[] = {"ID", "Type", "Balance", "Interest"};
String rows[][];
private int nColumns;
private int nRows;
public AccountDataModel() {
rows = new String[theAccounts.count()][4];
for(int i = 0; i<theAccounts.count(); i++) {
Account x = theAccounts.getAccount(i);
String tmp[] = {x.getAccountID(), x.getType(), x.getBalanceStr(), x.getInterestStr()};
rows[i] = tmp;
}
nColumns = columns.length;
nRows = rows.length;
}
public int getColumnCount() {
return nColumns;
}
public int getRowCount() {
return nRows;
}
public Object getValueAt (int row, int column) {
return rows[row][column];
}
public String getColumnName (int columnIndex) {
return columns[columnIndex];
}
public void setValueAt (Object aValue, int row, int column) {
String cellValue;
if (aValue instanceof String) {
cellValue = (String)aValue;
} else {
cellValue = aValue.toString();
}
rows[row][column] = cellValue;
fireTableCellUpdated(row, column);
}
public boolean isCellEditable(int row, int column) {
return false;
}
}
}