Moin,
zur Java Programmierung habe ich eine Frage: Für ein Programm hätte ich
gerne eine Art Tabelle von Graphikelementen (Panels oder Fenster). Diese
Tabelle soll nicht einzelne einfache Zellen enthalten, sondern sowas,
wie zum Beispiel der Reichelt Warenkorb, also verschiedene Einträge mit
Bearbeitungsmöglichkeiten. Es soll Text drinstehen, Textfelder, Knöpfe
und vielleicht ein Bild. Ich hoffe, es ist einigermaßen verständlich,
was ich meine.
Mit einer JTable und TableCellRenderer habe ich es schon probiert, aber
die Tabelle zeigt nicht das Panel an, sondern nur die
Stringrepräsentation des Panels. Ich brauche keine fertige Lösung,
sondern nur den Ansatz zum weiterarbeiten.
Danke schonmal.
Dussel schrieb:> Mit einer JTable und TableCellRenderer habe ich es schon probiert, aber> die Tabelle zeigt nicht das Panel an, sondern nur die> Stringrepräsentation des Panels. Ich brauche keine fertige Lösung,> sondern nur den Ansatz zum weiterarbeiten.
Ja WIE hast du es den probiert?
Hier steht wie es grundsätzlich geht:
http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#editrender
Grundsätzlich wird das angezeigt, was du in der
getTableCellRendererComponent Methode zurückgibst.
1
publicComponentgetTableCellRendererComponent(
2
JTabletable,Objectcolor,
3
booleanisSelected,booleanhasFocus,
4
introw,intcolumn)
d.h. nicht wie in den Beispielen "this" sondern halt dein Panel oder so,
du solltest dann auch nicht DefaultTableCellRenderer erweitern sondern
schlicht das TableCellRenderer interface.
Manchmal ist es doch echt blöd. Jetzt habe ich mich (nach mehr oder
weniger) langem Probieren dazu durchgerungen, hier die Frage zu stellen
und dann probiere ich es noch einmal und komme auf die Lösung…
Als probiert habe ich es mit dem TableCellRenderer auf verschiedene
Arten, habe aber immer nur das Panel oder Fenster als String in der
Tabelle angezeigt bekommen.
Die einfache Lösung: Es lag nicht am Renderer. Der war bei den Versuchen
meistens richtig, nur wurde er nicht aufgerufen. Der Renderer wird für
eine bestimmte Klasse festgelegt. Allerdings liefert das
DefaultTabelModel, das ich benutzt habe, für jede Zelle nur 'Component'
als Zellinhalt zurück. Und damit ruft die Tabelle nur den
Standardrenderer auf, der bei unbekannten Klassen toString() zurück
gibt. Mit einem eigenen Modell, das bei entsprechenden Zellen
'EigenesPanel' zurückliefert, funktioniert es jetzt.
Trotzdem dank.
Dussel schrieb:> Mit einem eigenen Modell, das bei entsprechenden Zellen 'EigenesPanel'> zurückliefer
das geht aber auch ohne Spezielle Klasse steht auch im tutorial:
Dussel schrieb:> Das Problem war ja nicht der Renderer, sondern rauszufinden, dass es> eben nicht am Renderer lag
Deshalb für die Zukunft gut zu wissen, falls du z.B. eine ganz spezielle
super duperzelle hast, oder eben nicht ausschließlich am Datentyp den
Renderer festmachen kannst....
Eine eigene Frage?
Dieser Thread ist über 12 Jahre alt.
Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.