26. marts 2005 - 02:16Der er
5 kommentarer og 1 løsning
JTable opdatere/nyt indhold
Hvordan skal man opdatere en JTable ?
Jeg starter med at lave en tom table, og får senere dataerne til den (flere gange i samme program)
Ligenu laver jeg en ny instans af det panel der har tabellen, som fylder den med data under construction og repainter så både main gui, og det panel som tabellen ligger i, men den ændres ikke.
har prøvet at fylde data i fra start og det virker fint, så min metode i tabel panelet virker fint.
er der en anden måde hvor man kan geninitialisere tabellen med nye data (de fylder ikke det samme antal rækker, men altid det samme antal kolonner)
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
// Create data model employeeModel = new EmployeeDataModel(rows);
// Create/setup table JTable table = new JTable(employeeModel);
// Place table in JScrollPane JScrollPane scrollPane = new JScrollPane(table);
// Add to Screen add(scrollPane, BorderLayout.CENTER);
}
class EmployeeDataModel extends AbstractTableModel { String[][] rows; public EmployeeDataModel(String[][] rows) { this.rows = rows; }
// By extending AbstractTableModel, instead of // implementing TableModel yourself, // AbstractTableModel takes care of // TableModelListener list management
Og så får du lige hele samlingen, så du kan se hvilke andre ting jeg har ændret, har blandt andet ændret lidt i modellens metoder og tilføjet et par i bunden.
// Create data model employeeModel = new EmployeeDataModel(); table = new JTable(employeeModel);
// Place table in JScrollPane JScrollPane scrollPane = new JScrollPane(table);
// Add to Screen add(scrollPane, BorderLayout.CENTER);
}
class EmployeeDataModel extends AbstractTableModel { private ArrayList rows; // ArrayList eller Vector, dynamisk ! private int numColumns = 4; private int numRows = result.size(); private String columns[] = {"ID", "Time", "Title", "Section"};
public EmployeeDataModel(){ rows = new ArrayList(); }
// By extending AbstractTableModel, instead of // implementing TableModel yourself, // AbstractTableModel takes care of // TableModelListener list management
public int getColumnCount() { return numColumns; }
public int getRowCount() { return numRows; }
public Object getValueAt(int row, int column) { return ((Vector)rows.get(row)).elementAt(column); }
public String getColumnName(int columnIndex) { return columns[columnIndex]; }
public void setValueAt(Object aValue, int row, int column) { Vector vec = rows.get(row); vec.setElementAt(aValue, column); fireTableCellUpdated(row, column); }
public boolean isCellEditable(int row, int column) { return false; }
public void removeRows(){ rows = new ArrayList(); fireTableDataChanged(); }
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.