odświeżenie JTable po SELECT

0

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?

0

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.

0

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?

0

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).

0

Na chwilę obecną chciałbym się dowiedzieć jak to zrobić w " czystym Swing'u ", ponieważ w nim mam całą aplikację zrobioną, a nie chcę mieszać czystego Swing'a z SAF.

0

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

1 użytkowników online, w tym zalogowanych: 0, gości: 1