Npr. ovako:
StavkaRacuna je klasa cije ces objekte kreirati nekako citanjem iz baze. A onda ces ih pakovati u neku listu (npr. java.util.ArrayList), zatim tu listu prosledis konstruktoru objekta koji predstavlja model tvoje tabele. Ove StavkaRacuna mozes dodavati i pojedinacno jedan po jedan u model.
Code:
import java.util.ArrayList;
import javax.swing.table.AbstractTableModel;
public class Model extends AbstractTableModel {
private ArrayList datalist=new ArrayList();
private String[] zaglavlje={"ID", "Ime i prezime"};
.
.
.
Vidis da sam odmah napravio datalist=new ArrayList(); da bih izbegao NullPointerException.
Da bi tvoja klasa modela bila model moras da prosiris AbstractTableModel a onda da implementiras neke metode, a to su:
Code:
public int getRowCount();
public int getColumnCount();
public Object getValueAt(int row, int col);
public String getColumnName(int col);
Ovo su osnovne, ima ih jos puno koje mozes da implemetiras da bi tabela imala neke napredne funkcionalnosti. To pogledaj u dokumentaciji za javu 1.5.
E sad ovo nije sve. Da bi mogao nekad u tu tabelu da dodas ili iz nje izbacis jedan red mogao bi da implemetiras neke tvoje metode za dodavanje StavkaRacuna u datalist. Npr.:
Code:
public void addStavkaRacuna(StavkaRacuna s);
Dacu ti neku implementaciju koju sam ja radio cisto da vidis kako to moze. A mozda postoje i bolji i efikasniji nacini.
Code:
.
.
.
//Konstruktor
public Model() {
super();
}
//Broj redova
public int getRowCount() { return datalist.size(); }
//Broj kolona
public int getColumnCount() { return zaglavlje.length; }
//vrednos oderedjene celije
public Object getValueAt(int row, int col) {
Widget widget=(Widget)datalist.get(row);
switch(col) {
case 0: return widget.getId();
case 1: return widget.getIme();
default: return null;
}
}
//Ime kolona
public String getColumnName(int col) {
return zaglavlje[col];
}
//Dodavanje jednog reda u model
public void addWidget(Widget w) {
datalist.add(w);
//Obavesti osluskivace o promeni u modelu da bi azurirali pogled
fireTableDataChanged();
}
//Dohvatanje widgeta
public Widget getWidget(int row) {
return (WidgetPojedinacneTabele)datalist.get(row);
}
//Izbacivanje reda iz modela
public Widget removeWidgetAt(int row) {
Widget w=(Widget)datalist.remove(row);
this.fireTableDataChanged();
return w;
}
public void removeAll() {
datalist.clear();
fireTableDataChanged();
}
}
E da... video si ove metode fireTableDataChanged() koje sam pozivao posle svake izmene u listi datalist. One vrse update grafickog prikaza tabele, tako da korisnik vidi
sta se desava u tabeli.
Nadam se da sam pomogao...
Pozdrav