Witam, mam programik który wyświetla wyniki z bazy w tabelce. W ComboBox'ach mam daty, które po wybraniu są wstawiane do zapytania SELECT, jak zrobić aby po kolejnym wykonaniu zapytania odświeżyła się tabelka z poprawnymi danymi?

- Rejestracja:ponad 17 lat
- Ostatnio:ponad 2 lata
No wywal wszystkie rekordy i wstaw te nowe.
Zależy też z czego korzystasz - ja ze swing app framerowk - nie muszę się babrać w odświeżanie...on mi sam pilnuje by operacje na komponentach były w wątku EDT. I sam je odświeżą.
Normalnie jak klepiesz to mozesz skorzystać z metody updateUI w klasie Jtable...albo po prostu zrobić repaint na ramce.
- Rejestracja:ponad 18 lat
- Ostatnio:ponad 6 lat
Też korzystam ze Swing'a, to jest mój pierwszy program z JTable.
Wytłumaczę to inaczej, po uruchomieniu programu odczytuję dane z bazy:
if(rs != null) rs.close();
String query = "select * from baza";
rs = stat.executeQuery(query);
crs = new CachedRowSetImpl();
crs.populate(rs);
model = new MyTableModel(crs);
tabela = new JTable(model);
Jak zrobić aby po wywołaniu akcji dla przycisku
btnOdswiez.addActionListener(new ActionListener() {
@Override
public void actionPerformed(ActionEvent e) {
ResultSet rs = null;
String query = "select * from baza where event_date between '" + lblDataOd.getText().toString() +
"' and '" + lblDataDo.getText().toString() + "'";
try
{
rs = stat.executeQuery(query);
}
catch(SQLException ex)
{
ex.printStackTrace();
}
}
});
w tabeli wyświetliły się tylko te dane z zapytania wykonanego w przycisku?

- Rejestracja:ponad 17 lat
- Ostatnio:ponad 2 lata
Kolego...przez Swing application framework miałem na myśli naprawdę ten framework a nie "czystego" swinga. Poczytaj o SAF'ie - łatwiej się piszę troszeczkę : łatwiejsza obługa zasobów, odświeżania gui i progresbarów.
Ja to własnie robię w ten sposób: to binduje butona z akcją (odnotacja @Action i klasa dziedziczy po Task) i tam mam jakiś odczyt i podmianę rekordów etc (można to zrobić w tle - metoda doingBackgorun) i po skoćńzeniu możesz sam określić co chcesz zrobić ale takie rzeczy jak odświeżanie GUI zrobią się same. SAF sam dba by odśieżanie komponentów było w wątku EDT (służacego właśnie do takich rzeczy).
Nie znam klasy MyTableModel i nie wiem w jakiej postaci przechowujesz dane (tabela, kolekcja,...). Powinieneś mieć w tej klasie metody usuwające wszystkie dane i zmieniające dane. Przykładowy kod:
try
{
rs = stat.executeQuery(query);
crs = new CachedRowSetImpl();
crs.populate(rs);
model.clear();
model.setData(crs);
model.fireTableDataChanged();
}