23. august 2003 - 21:47Der er
17 kommentarer og 2 løsninger
Object i jtable
Når jeg laver en JTable så putter jeg en DefaultTableModel i den således:
String[] kolonner = {"by","postnummer"}; DefaultTableModel model = new DefaultTableModel(kolonner,0); JTable table = new JTable(kolonner);
derefter adder jeg rows med: String[] row = {"Lyngby","2800"}; model.add(row);
Fint nok Men hvis nu at "By" er et object med 2 variabler i (by og postnummer) Kan man så ikke direkte associere et "row" med et object??
Så hvis man henter et rownummer så kan man også hente objektet som dataene er tilknyttet? altså: model.add(by);
på nuværende tidspunkt har jeg en tabel og en collection med objekter. Skal jeg bruge noget må jeg finde den selectede row, hente værdien og derefter løbe min collection igennem efter det matchende object...Lidt øv...
public class ATableModel extends AbstractTableModel { private String[] columns = { "Firma", "Omsætning", "Budget", "budget vs oms", "% af total oms." }; private ArrayList data;
public ATableModel() { data = new ArrayList(); }
public int getColumnCount() { return columns.length; }
public int getRowCount() { return data.size(); }
public String getColumnName(int column) { return columns[column]; }
Her er en artikel, hvor der er lagt fokus på at tabel-grid'et skal være hurtig i optrækket, men mon du ikke kan finde en sample TableModel der et eller andet sted
Taktak begge to..det er lige præcis, det jeg mener...kan i ikke begge oprette et svar så deler jeg points´ne imellem jer. (bearhugx kom først og ledte mig på sporet og trp79 gav mig koden...
metoden getColumnClass(int) bruges af CellRender'en til at finde ud af, hvilken klasse, data i den pågældende kolonne er af - og dermed, hvordan den skal vise det data, som vil optræde i den pågældende kolonne...
Hvis det f.eks. er String, så vil CellRenderen normalt bare skrive tekststrengen (formentligt som et JPanel)...
Men forestil dig at Class'en for den kolonne var Boolean - så er standarden at afbillede en checkboks (som er sat, hvis den boolske værdi er sand) -- hvis Class'en er en form for List (Collection) vises cellen derimod tit som en drop-down liste, med Listen valgmuligheder i....
I dit tilfælde er både PostNr og ByNavn en String (antager jeg), så derfor kan du faktisk lave en metode, som udelukkende sender String tilbage.
// DENNE METODE VIL ALTID RETURNERE CLASS FOR java.lang.String. public Class getColumnClass(int bruges_ikke) { String dummy = new String(); return dummy.getClass(); // Der er sikkert en måde man kan bruge uden at skulle instantiere en dummy // - det lader jeg andre til at finde ud af :-) }
bearhugx ->> Tak for udredningen...Nu er jeg bedre med.. :)
Mvh Casialty
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.