Archief - JAVA: data van een list in een JTable steken

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

Pixie360

Legacy Member
Hoe kan ik de informatie van een List (van het object Persoon) in een JTable steken? Want zit nu al een aantal uren te prutsen maar ik kom geen stap verder :(

forloRn_

Legacy Member
Komaan, het staat hier helemaal bovenaan. Je moet een AbstractTableModel meegeven met de constructor van JTable, en drie methods implementeren: het aantal kolommen, het aantal rijen en de data op een bepaalde rij/kolom.

Pixie360

Legacy Member
Daar staat nog altijd niet hoe ik de data van de list in de tabel krijg hoor :s
Ofwel ben ik blind :oink:

forloRn_

Legacy Member
't Is MVC: de JTable verzorgt het displayen, het TableModel voorziet de data.

Hier komt het grofweg op neer:
Code:
private static class PersoonTableModel extends AbstractTableModel {
    private List<Persoon> people;

    public PersoonTableModel(List<Persoon> people) {
        this.people= people;
    }

    @Override public int getColumnCount() { return 2; }

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

    @Override public Object getValueAt(int row, int col) {
        switch(col) {
        case 0: return people.get(row).getName();
        case 1: return people.get(row).getAge();
        default: throw new RuntimeException("no such column");
        }
    }
}

Pas het aan en geef een instance van PersoonTableModel mee aan je JTable.

Pixie360

Legacy Member
Ik heb nu dit maar nu zegt ie bij tblKlanten = new JTable(PersoonTableModel) het volgende: PersoonTableModel can't be resolved :confused:

Code:
public class KlantSelecteren extends javax.swing.JFrame {
	

	private JScrollPane jScrollPane1;
	private JTable tblKlanten;

		
	{
		//Set Look & Feel
		try {
			javax.swing.UIManager.setLookAndFeel(javax.swing.UIManager.getSystemLookAndFeelClassName());
		} catch(Exception e) {
			e.printStackTrace();
		}
	}


	/**
	* Auto-generated main method to display this JFrame
	*/
	/*public static void main(String[] args) {
		SwingUtilities.invokeLater(new Runnable() {
			public void run() {
				KlantSelecteren inst = new KlantSelecteren();
				inst.setLocationRelativeTo(null);
				inst.setVisible(true);
			}
		});
	}*/
	
	public KlantSelecteren() {
		super();
		initGUI();
	}
	
	private void initGUI() {
		try {
			setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
			getContentPane().setLayout(null);
			{
				jScrollPane1 = new JScrollPane(tblKlanten);
				getContentPane().add(jScrollPane1);
				jScrollPane1.setBounds(10, 11, 565, 150);
				{
					
					tblKlanten = new JTable(PersoonTableModel);
					jScrollPane1.setViewportView(tblKlanten);
					tblKlanten.setBounds(10, 11, 10, 10);
					tblKlanten.setSize(565, 150);
				}
			}
			{
		
			}
			pack();
			this.setSize(600, 300);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
	
	private static class PersoonTableModel extends AbstractTableModel {
		
		domein.KlantControle klantControle = new domein.KlantControle();
		
	    private List<domein.Persoon> klantenlijst = klantControle.getKlantenlijst();

	    public PersoonTableModel(List<domein.Persoon> p) {
	        this.klantenlijst= p;
	    }

	    @Override public int getColumnCount() { return 8; }

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

	    @Override public Object getValueAt(int row, int col) {
	        switch(col) {
	        case 0: return klantenlijst.get(row).getPersoon_ID();
	        case 1: return klantenlijst.get(row).getVoornaam();
	        case 2: return klantenlijst.get(row).getNaam();
	        case 3: return klantenlijst.get(row).getStraat();
	        case 4: return klantenlijst.get(row).getHuisnr();
	        case 5: return klantenlijst.get(row).getGemeente();
	        case 6: return klantenlijst.get(row).getPostcode();
	        case 7: return klantenlijst.get(row).getGeboortedatum();
	        default: throw new RuntimeException("no such column");
	        }
	    }
	}

}

forloRn_

Legacy Member
forloRn_ zei:
Pas het aan en geef een instance van PersoonTableModel mee aan je JTable.

Als list je lijst van personen is:

Code:
tblKlanten = new JTable(new PersoonTableModel(list));

Pixie360

Legacy Member
Edit: Laat maar foutje gevonde :D
Heel erg bedankt het werkt nu!! Maar nog klein vraagje hoe kan ik nu mijn kolommen een naam geven?
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan