# Font in erster JTable Zeile ändern



## eusti (2. Oktober 2006)

Hallo!

Ich möchte gerne die Schriftart in "einer" Zeile in einem JTable ändern.

habe folgenden Renderer:

class cellRenderer extends DefaultTableCellRenderer {
        public boolean isCellEditable(int row,int col){
            jTable1.setFont(new java.awt.Font("Arial",1,12));
            jTable1.revalidate();
            return true;

        }
    }    

Aber leider wird in der kompletten Tabelle die Schriftart geändert.
Ich weiß nicht wie ich die Schriftart zu einer einzigen Zeile zuordnen kann.
Vielleicht hat jemand eine Ahnung, wie das funktioniert.
Danke schonmal für die Hilfe!


----------



## zeja (2. Oktober 2006)

Ganz einfach du bekommst ja die aktuelle Zeile (row) und Spalte (col) mit übergeben.

Dann kannst du ja abfragen ob es sich um die Erste Zeile handelt und nur dann die Schriftart ändern


----------



## eusti (3. Oktober 2006)

Danke für die Antwort.
Leider hab ich das schon ausprobiert, indem ich geschrieben habe:

if (row==1){
//hier steht die Formatierung
}

Leider auch ohne Erfolg.
Es wird die komplette Tabelle ausgefüllt.

Hast du noch eine andere Idee?


----------



## zeja (3. Oktober 2006)

Oh das war echt zu spät gestern abend....

Wenn du auf der Tabelle die Schriftart änderst wird sie natürlich auch für die ganze Tabelle übernommen.

Nur die Schriftart in der Ersten Zeile ändern klingt so als wenn du einfach Überschriften brauchst? Die sind im folgenden Beispiel auch direkt mit dabei (columnNames):


```
package com.javatutor.insel.ui.table;

import java.awt.Component;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import javax.swing.table.DefaultTableCellRenderer;

public class SimpleTable {

	public static void main(String[] args) {

		class CellRenderer extends DefaultTableCellRenderer {

			/*
			 * (non-Javadoc)
			 * 
			 * @see javax.swing.table.DefaultTableCellRenderer#getTableCellRendererComponent(javax.swing.JTable,
			 *      java.lang.Object, boolean, boolean, int, int)
			 */
			@Override
			public Component getTableCellRendererComponent(JTable table,
					Object value, boolean isSelected, boolean hasFocus,
					int row, int column) {
				// TODO Auto-generated method stub
				if (row == 0) {
					JLabel label = new JLabel((String) value);
					label.setFont(new java.awt.Font("Arial", 1, 12));
					return label;

				}
				return super.getTableCellRendererComponent(table, value,
						isSelected, hasFocus, row, column);
			}

		}

		String[][] rowData = { {"Japan", "245"}, {"USA", "240"},
				{"Italien", "220"}, {"Spanien", "217"}, {"Türkei", "215"},
				{"England", "214"}, {"Frankreich", "190"},
				{"Griechenland", "185"}, {"Deutschland", "180"},
				{"Portugal", "170"}};
		String[] columnNames = {"Land",
				"Durchschnittliche Sehdauer pro Tag in Minuten"};
		JFrame f = new JFrame( );
		f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		JTable table = new JTable(rowData, columnNames);
		table.setDefaultRenderer(Object.class, new CellRenderer( ));
		f.add(new JScrollPane(table));
		f.pack( );
		f.setVisible(true);
	}
}
```


----------



## eusti (3. Oktober 2006)

Ach ja.
Hab an diese Möglichkeit garnicht mehr gedacht.
Hab das in der Vergangenheit auch schon mal mit einer jComboBox gemacht,
die ich in eine Tabelle reingesetzt habe.
Deren Inhalt konnte ich dann unabhängig von der Tabelle formatieren.
Super! Vielen Dank für den Tip!

Gruß,
Eusti


----------

