Hi Leute, ich bin gerade dabei ein GUI für ein OfficeVerwaltungstool zu schreiben, dass ich im Rahmen meines Informatikstudiums gerade programmiere.
Ich hab hier ein kleines Problem bzg eines CustomCellRenderer.
Ich will einen CellRenderer, den ich als DefaultRenderer für meinen Table setzte und der mir danach jede zweite Zeile anders einfärben soll (ohne noch etwas markiert zu haben etc.)
Hab bereits etwas gegooglet und bisschen durch die JavaDoc gestöbert aber bin noch nicht wirklich auf das Problem gekommen.
Meine Renderer ist bisher so aufgebaut:
Wenn ich den Renderer nun nachdem ich meinen Table mit Daten befüllt habe mit
passiert mal gar nichts.
mit
werden zumindest noch die makierten Reihen eingefärbt vom DefaultTableCellRenderer, was mich schonmal etwas stutzig macht weil ja schließlich Object.class für alles gelten sollte.
Ich verwende das DefaultTableModel, das ich meinem Table im Konstruktor übergeben, sofern das eine Rolle spielt.
Und noch eine weitere Frage, wie werden die Daten eigentlich intern von Java an den TableCellRenderer übergeben, beim hinzufügen einer Reihe, Spalte?
Danke schonmal im Vorhinein.
Grüße Chris
Ich hab hier ein kleines Problem bzg eines CustomCellRenderer.
Ich will einen CellRenderer, den ich als DefaultRenderer für meinen Table setzte und der mir danach jede zweite Zeile anders einfärben soll (ohne noch etwas markiert zu haben etc.)
Hab bereits etwas gegooglet und bisschen durch die JavaDoc gestöbert aber bin noch nicht wirklich auf das Problem gekommen.
Meine Renderer ist bisher so aufgebaut:
Java:
public class CustomTableCellRenderer extends JLabel implements TableCellRenderer {
private Color lightblue = new Color(160,160,255);
private Color darkblue = new Color(64,64,128);
public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
if(row%2 == 0) {
this.setBackground(lightblue);
}
else this.setBackground(darkblue);
if(isSelected) {
//...
}
if(hasFocus) {
//...
}
setText(value.toString());
//setToolTipText(value.toString());
return this;
}
}
Wenn ich den Renderer nun nachdem ich meinen Table mit Daten befüllt habe mit
Java:
table.setDefaultRenderer(Object.class, new CustomTableCellRenderer());
mit
Java:
table.setDefaultRenderer(String.class, new CustomTableCellRenderer());
Ich verwende das DefaultTableModel, das ich meinem Table im Konstruktor übergeben, sofern das eine Rolle spielt.
Und noch eine weitere Frage, wie werden die Daten eigentlich intern von Java an den TableCellRenderer übergeben, beim hinzufügen einer Reihe, Spalte?
Danke schonmal im Vorhinein.
Grüße Chris