Witam,
Widziałem na forum podobne przykłady, jednak odbiegały one w pewnym stopniu, od mojego sposobu pisania kodu :), tzn są dla mnie nie do końca jasne :). W związku z tym mam pytanie, co należy dodać (prawdopodobnie fireTableDataChanged()), ale właśnie w jaki sposób należy zaimplementować tą metodę w stosunku do poniższego kodu? Co należy zrobić, aby uzyskać "odświeżanie" tabeli po dodaniu do niej rekordu (rowniez po operacji szukania, usuwania,itd) - dokladnie po nacisnieciu przycisku? Liczę na wyrozumiałość i pomoc z Waszej strony, gdyż nie za bardzo się w tym łapie :(
klasa RybyModel
public class RybyModel extends AbstractTableModel{
private String [] nazwyKolumn = {"id","gatunek","waga","długość","przyn_rodz",
"przyn_opis","łowiska","data"};
private Vector<Ryba> dane;
public void setDane(Vector<Ryba> dane){
this.dane=dane;
}
public int getColumnCount() {
return nazwyKolumn.length;
}
public int getRowCount() {
return dane.size();
}
public String getColumnName(int kolumna){
return nazwyKolumn[kolumna];
}
public Object getValueAt(int wiersz, int kolumna) {
Ryba r = dane.get(wiersz);
switch(kolumna){
case 0:
return r.id;
case 1:
return r.gatunek;
case 2:
return r.waga;
case 3:
return r.dlugosc;
case 4:
return r.przyn_rodz;
case 5:
return r.przyn_opis;
case 6:
return r.lowisko;
case 7:
return r.data;
}
return null;
}
}
W klasie Ryba dwie najważniejsze dla tego problemu metody:
static void GUI(){
SelectData();
JFrame mainWindow = new JFrame("Database");
JTable table = new JTable(model);
JScrollPane scrollPane = new JScrollPane(table);
JPanel panel = new JPanel();
panel.setLayout(null);
for(int i=0;i<polatekstowe.length;i++){
panel.add(polatekstowe[i] = new JTextField(i));
}
polatekstowe[0].setBounds(50,430,100,20);
.....
guziki[0].setBounds(150,250,100,50);
.......
labelki[0].setBounds(100,400,50,20);
........
mainWindow.getContentPane().add(panel);
mainWindow.setResizable(false);
mainWindow.getContentPane().add(BorderLayout.NORTH,table);
mainWindow.setSize(1280, 770);
mainWindow.setVisible(true);
mainWindow.setDefaultCloseOperation(EXIT_ON_CLOSE);
}
oraz
static void SelectData(){
String select = "SELECT * FROM spinning";
try{
stmt = conn.createStatement();
ResultSet result = stmt.executeQuery(select);
while(result.next()){
value1 = result.getString("id");
value2 = result.getString("gatunek");
value3 = result.getString("waga");
value4 = result.getString("dlugosc");
value5 = result.getString("przyneta_rod");
value6 = result.getString("przyneta_opis");
value7 = result.getString("lowiski");
value8 = result.getString("data");
rybki.add(new Ryba(value1,value2,value3,value4,value5,value6,value7,value8));
model.setDane(rybki);
}
}catch(Exception e){
System.err.print("Pobranie danych z bazy nie powiodło się.");
}
}