table = new JTable( model ) {
public Component prepareRenderer(
TableCellRenderer renderer, int row, int column) {
Component c = super.prepareRenderer(renderer, row, column);
((DefaultTableCellRenderer)renderer).setHorizontalAlignment(SwingConstants.LEFT);
if(column==1)
((DefaultTableCellRenderer)renderer).setHorizontalAlignment(SwingConstants.CENTER);
return c;
}
};
table = new JTable( model ) {
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
==> Component c = super.prepareRenderer(renderer, row, column); <==
if(column==1)
==> ((DefaultTableCellRenderer)renderer).setHorizontalAlignment(SwingConstants.CENTER); <==
return c;
}
};
Nein, ein TableModel hat nichts mit der Formatierung der Daten zu tun .TRunKX hat gesagt.:...kann man nicht im TableModel einfach das allignement setzen?...
a) gibt dir eine Referenz auf die Komponente die die Zelle darstellt, mit c.setBackground()Raphalon hat gesagt.:1.) Könnte mir diese jemand kurz erklären?
==> Component c = super.prepareRenderer(renderer, row, column); <==
==> ((DefaultTableCellRenderer)renderer).setHorizontalAlignment(SwingConstants.CENTER); <==
Ich bin mir nicht ganz sicher, aber ich denke prepareRenderer() ist effizienter. Jedenfalls ist es hier einfacher.Raphalon hat gesagt.:2.) Habe einen eigenen Renderer abgeleitet, doch ist das aufwändiger und lt. dem
"Handbuch der Java-Programmierung, 4. Auflage" "recht ineffizient und belastet den
Garbage Collector". Entsteht das mit dem von Andre vorgeschlagenen Code nicht auch?
Wo ist da der Widerspruch?Raphalon hat gesagt.:3.) Wie ist es möglich, in einem JTable das Selektionsmodell auf SINGLE_SELECTION zu bestimmen
und dennoch eine Zeile direkt nach dem Programmstart vorzuselektieren?
Was versteht man unter dem Begriff „vorbereiten“ bzw. “Prepares the renderer by querying the data model for the value and selection state of the cell at row, column.” Was für ein Prozeß läuft dabei ab?André Uhres hat gesagt.:b) "renderer" ist eine Refrenz auf den Renderer der hier vorbereitet wird,
"setHorizontalAlignment(SwingConstants.CENTER)" ist glaube ich selbsterklärend.
Wenn Du schreibst, es gibt keine Alternativen, was meinst Du damit? Ich habe einen Renderer aus der Klasse DefaultTableCellRenderer abgeleitet und das funktioniert auch, nur umständlicher.André Uhres hat gesagt.:Ich bin mir nicht ganz sicher, aber ich denke prepareRenderer() ist effizienter. Jedenfalls ist es hier einfacher.
Und weitere Alternativen gibt's sowieso nicht.
Wenn ich das Selektionsmodell auf SINGLE_SELECTION setze und das Programm starte, ist zunächst keine Zeile selektiert. Dies geschieht erst dann, wenn ich mit der Maus eine selektiere.André Uhres hat gesagt.:Wo ist da der Widerspruch?