# jTable Font einer Zelle ändern



## Sladda (1. Aug 2007)

Hallo!

Ich möchte in meiner JTable den Inhalt (String) aller Zellen, die kein "@" enthalten, fett machen.
Leider weiß ich nicht so recht wie ich da ran komme, ich müsste also jede Zelle durchsuchen und
testen ob ein "@" enthalten ist und dann den Font dieser einzelnen Zelle ändern. 
Aber wie ?
Geht das überhaupt?

Vielen Dank!!!
Sladda


----------



## LordTerra (1. Aug 2007)

also z.b.:
du kannst alle zellen auslesen nen stringtokenizer drüber jagen mit dem zeichen @als trenner und immer da wo du mehr als 1 string raus bekommst is nen @ drin und du setzt die spalte auf fett


----------



## P3AC3MAK3R (1. Aug 2007)

"Custom Cell Renderer" ist hier das richtige Stichwort:
http://www.exampledepot.com/egs/javax.swing.table/CustRend.html


----------



## Sladda (1. Aug 2007)

danke P3AC3MAK3R für deine Antwort.
leider kenn ich mich damit nicht aus. ich habe es versucht, aber das klappt irgendwie alles nicht:


```
public class MyTableCellRenderer extends JLabel implements TableCellRenderer {

        public Component getTableCellRendererComponent(JTable table, Object value,
                boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) {
    
        	String tmp= (String)value;
        	if (!tmp.contains("@"))
        		//fett machen

            return this;
        }

    }
```

geht das so ? wieso Component und wie mache ich nun die Zelle fett ?
Sorry für die vielen doofen Fragen...


----------



## Sladda (1. Aug 2007)

wens interessiert, so gehts:


```
public class MyTableCellRenderer extends DefaultTableCellRenderer implements TableCellRenderer {

        public Component getTableCellRendererComponent(JTable table, Object value,
                boolean isSelected, boolean hasFocus, int rowIndex, int vColIndex) {
        	
        	super.getTableCellRendererComponent(table, value, isSelected, 
                    hasFocus, rowIndex, vColIndex);
        	
        	if (value == null) return this;
        	if ("".equalsIgnoreCase((String)value)) return this;
        	
        	String tmp= (String)value;
        	if (!tmp.contains("@")){
        		this.setFont(new Font("Arial",1,12));
        	}
        	
            return this;
        }

    }
```

man muss nur n bischen fummeln..


----------



## André Uhres (1. Aug 2007)

Dies:

```
if (value == null) return this;
           if ("".equalsIgnoreCase((String)value)) return this;
           String tmp= (String)value;
           if (!tmp.contains("@")){
              this.setFont(new Font("Arial",1,12));
           }
```
könnte man auch so lösen:

```
if(value instanceof String && !((String) value).contains("@"))
            setFont(getFont().deriveFont(Font.BOLD));
```


----------

