Moin Moin.
Ich habe mir für meine Tabelle einen eigenener CellRenderer geschrieben, der in der dritten Spalte eine JCheckBox malern soll.
Ich weis, dass es dafür die Method
Die nützt mir aber nix, denn wenn ich meinen eigenen Renderer und diese MEthode nutze wird nur der Wert true oder false geschrieben (kein CheckBox) und mit dem StandardRenderer hat diese Spalte dann ein anderes Layout (nicht gewünscht).
Deshalb meine Frage, wie kann ich in meinem Renderer vereinbaren, dass wenn die Spalte = 3 (2) ist eine CheckBox gemalert wird je nachdem ob der value true oder false ist.
Mein CellRnderer
Ist wirklich wichtig, und mit :### komm ich auch nicht weiter.
Thx
Ich habe mir für meine Tabelle einen eigenener CellRenderer geschrieben, der in der dritten Spalte eine JCheckBox malern soll.
Ich weis, dass es dafür die Method
Code:
public Class getColumnClass(int c) {
return getValueAt(0, c).getClass();
}// endmethod
Deshalb meine Frage, wie kann ich in meinem Renderer vereinbaren, dass wenn die Spalte = 3 (2) ist eine CheckBox gemalert wird je nachdem ob der value true oder false ist.
Mein CellRnderer
Code:
package gui.tables;
import java.awt.Color;
import java.awt.Component;
import java.awt.Font;
import javax.swing.JTable;
import javax.swing.UIManager;
import javax.swing.table.DefaultTableCellRenderer;
public class TableCellRenderer extends DefaultTableCellRenderer
{
private Color unselectedForeground;
private Color unselectedBackground;
private Font font = new Font("Arial", Font.BOLD, 12);
public Component getTableCellRendererComponent(JTable table, Object value,
boolean isSelected, boolean hasFocus, int row, int column)
{
super.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column );
// gerade Zeilen werden coloriert
if ( (row % 2) == 0 )
{
setBackground( new Color(242, 199, 28));
}
// ungerade Zeilen haben weißen Hintergrund
else if (row % 2 != 0)
{
setBackground( Color.WHITE);
}
// Wenn die aufrufende Klasse den Namen "gui.tables.VehicleTable" hat wird die Schrift der ersten spalte geändert
if(table.getClass().getName().equals("gui.tables.VehicleTable") && column == 0)
{
setFont(font);
}
// TODO
//
// if (isSelected)
// {
// super.setForeground(table.getSelectionForeground());
// super.setBackground(table.getSelectionBackground());
// }
// else
// {
// super.setForeground((unselectedForeground != null) ? unselectedForeground
// : table.getForeground());
// super.setBackground((unselectedBackground != null) ? unselectedBackground
// : table.getBackground());
// }
//
// setFont(table.getFont());
if (hasFocus)
{
setBorder( UIManager.getBorder("Table.focusCellHighlightBorder") );
if (table.isCellEditable(row, column))
{
super.setForeground( UIManager.getColor("Table.focusCellForeground") );
super.setBackground( UIManager.getColor("Table.focusCellBackground") );
}// end if
}
else
{
setBorder(noFocusBorder);
}// end else
setValue(value);
return this;
}
}// end class TableCellRenderer
Ist wirklich wichtig, und mit :### komm ich auch nicht weiter.
Thx