webForumDet fria alternativet

JTable

0 svar · 232 visningar · startad av niels

nielsMedlem sedan juli 2000212 inlägg
#1

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;
		}

  	}
  	
}
128 ms totalt · 3 externa anrop · v20260731065814-full.3ab8d573
125 ms — hämta forumlista (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)