equestenebrarum hat gesagt.:Und was war der Preis?
Ein korrektes Verhalten des Programms in Richtung Do_What_I_Mean
Du scheinst Dich ja wirklich super mit Tabellen auszukennen. Da hab ich gleich noch eine Frage... ich möchte die Zellen in einer großen Tabelle alle einzeln einfärben, abhängig vom Wert, den sie zu einem fixen Zeitpunkt enthalten. Folgendes funktioniert nicht wie erwartet.
JTable SumTable = new JTable(m);
TableCellRenderer cr = SumTable.getCellRenderer(0,0);
((DefaultTableCellRenderer)cr).setBackground(Color.red);
cr = SumTable.getCellRenderer(0,1);
((DefaultTableCellRenderer)cr).setBackground(Color.green);
Muss ich für jede einzelne Zelle ein eigenes cell-Renderer-Object erstellen? Dann ist der Overhead wohl so groß, dass die Lösung nicht sooo sinnvoll ist. Fällt Dir da eine elegantere Lösung ein?
In meinem Beispiel ist es übrigens so, dass die Zellenwerte Integer-Werte repräsentieren und mit verschiedenen Grüntönen deren Größe wiedergespiegelt werden soll.
Ganz einfach. Du schreibst Dir für die Tabelle einen eigenen Renderer für Integer.class.
Entweder MyRenderer extends DefaultTableCellRenderer oder bastelst einen eigenen Renderer, z.B.
MyRenderer extends JLabel implements TableCellRenderer
Für beide Fälle implementierst Du die Methode
getTableCellRendererComponent(...) nach Deinen Wünschen. Die Integer-Werte bekommst Du als Parameter "value" übergeben - vorausgesetzt Du liest sie mit getValueAt auch als Integer aus.