Ein Objekt in JTable

BtheBeast

Mitglied
Heiho Jungs,

wiedermal ein Problem:
wie kann ich ganze Objekte einer Klasse in eine JTable schreiben, ich weiß ich brauch den TableCellRenderer aber wie das Funktioniert hab ich noch nicht rausbekommen.
Ich will dann am Ende sagen table.getSelectedRow() und dann Abfragen obs das gleiche ist wie das und das Objekt.
Vielen Dank schonmal.

Gruß B
 
Hallo,

um Objecte in eine JTable zu bekommen, brauchst du ein TableModel.
Der TableCellRenderer ist nur dazu da, um die Objecte darzustellen.

Du musst dir also einen eigenen TableCellRenderer schreiben.

Java:
class MyTableCellRenderer extends DefaultTableCellRenderer{
	@Override
	public Component getTableCellRendererComponent(JTable table, Object value,
			boolean isSelected, boolean hasFocus, int row, int column) {
		// TODO Auto-generated method stub
		JLabel label = (JLabel) super.getTableCellRendererComponent(table, value, isSelected, hasFocus,
				row, column);
		
		DeinObject ob = (DeinObject) value;
		
		label.setText(ob.deineStringMethode);
		label.setIcon(DeinIcon);
		
		return label;
	}
	
	
}

Die Methode wird bei jeder Zelle aufgerufen. Dort wird dann eine Component zurückgegeben, die dargestellt werden kann.
Bei dem DefaultTableRenderer wird dazu ein JLabel verwendet. Du könntest dir beispielsweise auch einen TableCellRenderer schreiben und einen JPanel darstellen.

Gruß

Sascha
 
Heiho vielen Dank!!

Aber ich glaub ich steh noch ein wenig aufm Schlauch:
ich hab jetzt gemacht bsp:
Code:
table.setModel(new MeinTableModel(foo,bar);
table.setDefaultRenderer(Long.class, renderer);

Muss ich jetzt net in meinem AbstractTableModel noch was ändern das das funktioniert?

Ich glaub echt ich steh aufm Schlauch ^^

Gruß B
 
also natürlich muss da ein anderes .class hin.

Trotzdem gehts noch net, obwohl ich im TableModel das richtige Objekt zurückgeb.
 
Zuletzt bearbeitet:
Zurück