Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

  • 4 odgovora
  • 3.285 pregleda

Najnovija ↓

ispis iz mysql-a 24.10.2010. u 22:51 · pre 195 meseci #1
Za ispis tablice iz mysql baze koristim Panel i na njemu DefaultTableModel. Poziv ispisa se vrši iz padajućeg izbornika menija. Međutim, kada na već dobiveni ispis ponovim operaciju ispisa dogodi se da mi se cijela tablica ispiše u nastavku prethodne, i tako za svaki sljedeći klik slijedi ispis nadovezan na prethodni. Ima li netko prijedlog kako da ovo riješim?

pimjer koda:
void listClanovi(){
Vector vc = SQLHandler.getClanovi();
for(int i=0; i<vc.size(); i++){
Clanovi sc = (Clanovi)vc.elementAt(i);
DTM2.addRow(new Object[]{sc.ID, sc.ime, sc.prezime, sc.Email, sc.telefon, sc.naziv_projekta});
}

}


pozdrav
Re: ispis iz mysql-a 25.10.2010. u 08:54 · pre 195 meseci #2
Ako ne obrišeš nešto i na to nešto nastaviš da dodaješ podatke onda je logično da ćeš da imaš i podatke od prije i nove podatke, meni zvuči logično.

Pretpostavljam da ti je ovo DTM2 table model, napravi mu neku medodu "isprazni" koju ćeš da pozoveš prije popunjavanja modela sa podacima, ili model nanovo instanciraj prije popunjavanja podacima.
Re: ispis iz mysql-a 26.10.2010. u 10:39 · pre 195 meseci #3
Ja bi to uradio na sledeci nacin, svaki put kad treba da popunis podatke iz tabele napunio bih novi table model i na zavrsetku samo nad samom tabelom setovao novi table model. Opet punjenje samog table modela bi napravio unutar swing workera, jer u protivnom moze da se desi recimo da aplikacija izgubi konekciju sa bazom, i onda izgleda kao da se aplikacija zaglavila tj nece da se iscrtava ponovo. ako je pomeris smanjis ili stavis nekidrugi prozor preko nje.
Potpis
http://speedy-order.com
Re: ispis iz mysql-a 26.10.2010. u 11:27 · pre 195 meseci #4
Cao. Kao prvo, ovako se ne radi sa tabelom u swingu. Savet: Napravi novu klasu koju ces nazvati ClanoviTableModel u koju ces ugurati listu,vektor(kolekciju) objekata Clan. Dalje, extendovaces DefaultTableModel ili ces implementirati AbstractTableModel(moj savet je da extendujes zato sto treba mali broj metoda da override-ujes). Dalje, napravi, po zelji, metode koje stavljaju, brisu, replace-uju objekte u listi ali ih nazovi tako da asociraju kao da radis sa tabelom, tipa public void insertClan(Clan clan){ kolekcija.add(clan); } I najvaznije od svega je da overrideujes metodu getValueAt(row, column)

Ova bi izgledala nesto nalik:

@Override
public Object getValueAt(int row, int column) {
Clan clan = lista.get(row);

switch(column)
{
case 1:
return clan.ID
break;
case 2:
return clan.ime;
break;
...
...
case n:
return clan.naziv_projekta;
return;

}
}

Dakle, moras da mapiras svaku kolonu na atribut objekta Clan.

Dalje, mozes se zezati i dodavati nesto tipa

public void clearTableContent()
{
lista.clear();
fireTableDataChanged();
}


public void refresh()
{
//dohvatis nove podake
clearTableContent();
//stavis u listu nove podatke
}

Uvek kad menjas podake u listi ides fireTableDataChanged().

Toliko od mene.


P.S. Poradi malo i na izgledu koda, ovo izgleda poprilicno pocetnicki.


Re: ispis iz mysql-a 14.11.2010. u 19:46 · pre 194 meseca #5
hmm.., ne znam koliko je ovako u redu, ali napravio sam tako da svaki puta prije pozivanja liste ispraznim vektor:


void listClanovi(){
Vector vc = SQLHandler.getClanovi();
for(int i=0; i<vc.size(); i++){
Clanovi sc = (Clanovi)vc.elementAt(i);
DTM2.addRow(new Object[]{sc.ID, sc.ime, sc.prezime, sc.Email, sc.telefon, sc.naziv_projekta});
}

private void menuItem1_actionPerformed(ActionEvent e)
{
DTM2.getDataVector().removeAllElements();
listClanovi();
}

}

pozdrav i hvala
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme