StdTableCellRenderer extends DefaultTableCellRenderer
hejNår man benytter en DefaultTableCellRenderer så plejer den selv at vis eksempelvis boolean objecter som en checkbox og det vil jeg også gerne have min klasse som extender DefaultTableCellRenderer til, men det er ikke helt lykkedes.
Årsagen til jeg extender DefaultTableCellRenderer er at jeg gerne vil have en anden baggrundsfarve på mine celler, hvor det er data i den enkelte celle der afgør farven.
Er der nogen som kan guide mig til en løsning hvor jeg både kan få mine farver vist og samtidig få vist en checkbox, såfremt at cellens object er en Boolean.
---------------kode------------------
package dk.elopak.client.gui.renderer;
import java.awt.Color;
import java.awt.Component;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;
import dk.elopak.client.data.DefaultServerDataView;
import dk.elopak.server.util.Converter;
/**
* @author Jan Gravgaard
*
*/
public class StdTableCellRenderer extends DefaultTableCellRenderer {
/**
* constructor
*
*/
public StdTableCellRenderer() {
setOpaque(true); //MUST do this for background to show up.
}
public Component getTableCellRendererComponent(JTable jtable, Object o,
boolean isSelected, boolean hasFocus, int row, int column) {
DefaultServerDataView dsdv = (DefaultServerDataView)jtable.getModel();
Object obj = dsdv.getValueAt(row, 0);
Color color = null;
if(obj instanceof Color){
color = (Color)dsdv.getValueAt(row, 0);
}
if(color!=null){
setBackground(color);
}else{
super.setBackground(jtable.getBackground());
}
if(o!=null){
switch (column) {
case 3: setText(Converter.formatDate(o)); break;
case 4: setText(Converter.formatNumber(o)); break;
case 5: setText(Converter.formatNumber(o)); break;
default: setText(o.toString()); break;
}
setToolTipText(o.toString());
}else{
setText("");
}
if (isSelected) {
//super.setForeground(jtable.getSelectionForeground());
super.setBackground(jtable.getSelectionBackground());
}
return this;
}
}
