Problem der Textfärbung, in JTable (TableCellRenderer)

Davicito

Erfahrenes Mitglied
Hallo,

ich habe heut einiges gelesen über das Setzen einer Textfarbe in der JTable.
es soll wohl möglich sein, mit Hilfe einer Unterklasse "DefaultTableCellRenderer" Farbwerde in den jeweiligen Cellen oder dessen Text zu verändern.

Dazu habe ich mir auch eine Renderer-Klasse angelegt die von der DefaultTableCellRenderer erbt.
Java:
public class MyTableCellRenderer extends DefaultTableCellRenderer{
    public MyTableCellRenderer(){}
   
    @Override
    public Component getTableCellRendererComponent(JTable table, Object value,  
                                                    boolean isSelected, boolean hasFocus, 
                                                    int row, int column){
        //super.getTableCellRendererComponent( table, value, isSelected, hasFocus, row, column );
        [...]  // Setze einen Farbwert              
        return //Component; 
    }        
}

JTable Erstellung unter Einbindung eines Table-Models und des Renderers
Java:
public class View{
[...]
//************ Table ************
         myTableModel = new MyTableModel();
        tableT = new JTable(myTableModel);
        tableT.getModel();      
        tableT.setFont(new Font("Arial", Font.PLAIN, 13));
        tableT.setDefaultRenderer(Object.class, new MyTableCellRenderer());             
[...]
}

Nun habe ich nach langem Googeln nicht so wirklich verstehen können, wie ich mit Hilfe meiner MyTableCellRenderer-Klasse einen Text, in einer bestimmten Spalte, meiner Tabelle, ändern kann.

Ich hab mir dann einen Code aus einem anderen Forum abgeschaut, mit dem ich das bewerkstelligen kann. S. nachfolgenden Code.
Java:
[...]
tableT = new JTable(myTableModel){
            @Override
            public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
                Component c = super.prepareRenderer(renderer, row, column);
                if (!isRowSelected(row)) {
                    if(column==9) c.setForeground(Color.BLUE);
                    else c.setForeground(Color.BLACK);
                }
                return c;
            }
        };    
[...]

Hat jemand eine Idee, wie ich das nun in meine MyTableCellRenderer-Klasse implementieren kann?

Ich freu mich wie immer über jede Hilfestellung. LG!
 
Wem es noch interessiert, habe ich eine Lösung parat.
Ich habe das JTable-Objekt, bei der Instanziierung einfach wie folgt um eine Mothode erweitert
Java:
...
tableT = new JTable(){  
@Override
public Component prepareRenderer(TableCellRenderer renderer, int row, int column) {
  Component c = super.prepareRenderer(renderer, row, column);  
  
  if (!isRowSelected(row)) {
  if(column==11) c.setForeground(Color.BLUE);
  else c.setForeground(Color.BLACK);
  }
  return c;
};
}; 
...
LG.
 
Zurück