Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Problem sa modelom tabele

[es] :: Java :: Problem sa modelom tabele

[ Pregleda: 1166 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Olinad1989
Student
Beograd

Član broj: 301351
Poruke: 10
*.dynamic.sbb.rs.



Profil

icon Problem sa modelom tabele08.07.2012. u 14:42 - pre 143 meseci
Potreban mi je model tabele koji ce sluziti za prikaz podataka iz bilo koje liste (na pr. List<A>, List<B>, List<C>). Tipove objekata liste, tipove podataka objekata, metode koji su mi potrebni za model tabele uzimam preko refleksije.

E sad... Pokusavao sam sa Modelom koji extend-uje AbstractTableModel i tu sam se pogubio kod getValueAt(int rowIndex, int columnIndex){} jer imam promenljivi broj kolona.

Da li bi neko mogao da pomogne?
 
Odgovor na temu

bantu

Član broj: 38670
Poruke: 305
89.111.240.*



+27 Profil

icon Re: Problem sa modelom tabele09.07.2012. u 07:50 - pre 143 meseci
Tu samo sam sebi možeš da pomogneš. :) Moraš da postaviš neka pravila igre, šta ćeš sve da prikazuješ odnosno šta dolazi u obzir a šta ne. Mislim, šta prikazati u tabeli kada imaš npr. List<InputStream> ili List<Serializable>, da sad ne lupam dalje ovo mi je palo na pamet. Jedna ideja je da napraviš neki svoj interface koji će da se zove TableRow ili nešto slično i da tu implementuješ neke metode kojima ćeš da pristupaš poljima tabele tipa getColumnCount, getColumnNames, itd... Druga opcija je ako ne želiš interface i hoćeš da to riješiš u potpunosti sa refleksijom onda možeš da pregledaš koliko ima mtoda koje počinju sa get* i da njih smatraš kolonama tabele mada i te metode mogu svašta da vraćaju pa možda i to da filtriraš na neke razumne tipove tipa String, int, double, itd...

 
Odgovor na temu

Olinad1989
Student
Beograd

Član broj: 301351
Poruke: 10
*.dynamic.sbb.rs.



Profil

icon Re: Problem sa modelom tabele09.07.2012. u 14:56 - pre 143 meseci
Hvala na odgovoru, ja sam se opredelio za ovaj drugi princip koji si naveo - da sve odradim preko refleksije.
Samo mi je problem kako da odradim model tabele, tj. ne mogu da provalim kako da iscupam podatke za: public Object getValueAt(int rowIndex, int columnIndex){} i public String getColumnName(int column) {}.
Inace, ta dobije listu sa objektima odredjenog(bilo kog) tipa i prikaze sve podatke.
Hocu da napravim model tabele koji ce moci da uzme podatke iz bilo koje liste i da posle preko:
Code:
public void ubaciListu(LinkedList<Osoba> linkedList) {
        lista=linkedList;
        fireTableDataChanged();
    }
ubacim u tabelu.
 
Odgovor na temu

bantu

Član broj: 38670
Poruke: 305
89.111.240.*



+27 Profil

icon Re: Problem sa modelom tabele10.07.2012. u 14:42 - pre 143 meseci
Evo ti jedan primjer pa ga samo doradi malo. O dosta stvari nisam vodio računa, tipa da li su metodi javni ili privatni, da li metod vraća nešto i šta je to nešto, itd... to doradi sam kako ti odgovara.

Ideja je da pokupiš sve metode koje počinju sa get i da model zasnivaš na tome.

Code:

public class ReflectionModel extends AbstractTableModel {

    private List lista;
    private Class c;
    private List<String> columnNames = new ArrayList<String>();

    public ReflectionModel(List lista) {
        if (lista != null && lista.size() > 0) {
            this.lista = lista;
            c = lista.get(0).getClass();
            Method[] methods = c.getDeclaredMethods();

            for (Method m : methods) {
                if (m.getName().startsWith("get")) {
                    System.out.println(m.getName());
                    columnNames.add(m.getName().substring(3));
                }
            }

        } else {
            System.out.println("Vidi sta ces!!!");
        }

    }

    @Override
    public int getRowCount() {
        return lista.size();
    }

    @Override
    public int getColumnCount() {
        return columnNames.size();
    }

    @Override
    public String getColumnName(int column) {
        return columnNames.get(column);
    }

    @Override
    public Object getValueAt(int rowIndex, int columnIndex) {
        try {
            Object o = lista.get(rowIndex);
            Class cl = o.getClass();
            Method m = cl.getMethod("get" + columnNames.get(columnIndex), new Class[]{});
            return m.invoke(o);
        } catch (Exception ex) {
            ex.printStackTrace();
            return ex.getMessage();
        }

    }
}


A upotrebljavaš na sledeći način:
Code:
List l = new ArrayList();
l.add(new TvojObjekat());
l.add(new TvojObjekat());
...
...
ReflectionModel model = new ReflectionModel(l);
jTable.setModel(model);


Nadam se da sam ti pomogao ili te bar uputio u pravom smjeru.


[Ovu poruku je menjao bantu dana 10.07.2012. u 15:58 GMT+1]
 
Odgovor na temu

[es] :: Java :: Problem sa modelom tabele

[ Pregleda: 1166 | Odgovora: 3 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.