Ciao Zero-2 !
Ti ho preparato del codice di esempio.
Quando ti interessa personalizzare alcuni componenti, prova ad utilizzare i loro 'modelli logici interni'.
codice:
import java.awt.Dimension;
import java.util.Vector;
import javax.swing.*;
import javax.swing.table.*;

class TableExample extends JFrame {

	TableExample() {
		super("Address Book");
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
		///////////////////////////////////////////////
		// n° di righe
		int rows = 10;
		// n° di colonne
		int columns = 4;
		// etichette colonne
		String[] labels = {"Column 0", "Column 1", "Column 2", "Column 3"};
		// larghezza colonne
		int[] widths = {50, 70, 120, 100};
		// vettore dati tabella
		Vector data = new Vector(0, 1);
		// vettore colonne tabella
		Vector columnNames = new Vector(0, 1);
		// popolo la tabella
		for(int i = 0; i < rows; i++) {
			// vettore singola riga tabella
			Vector row = new Vector();
			for(int j = 0; j < columns; j++) {
				row.addElement("value " + i + j);
			}
			data.addElement(row);
		}
		// intestazioni colonne
		for(int i = 0; i < columns; i++) {
			columnNames.addElement(labels[i]);
		}
		// modello dati della tabella
		DefaultTableModel tableModel = new DefaultTableModel(data, columnNames);
		// modello attributi delle colonne
		DefaultTableColumnModel columnModel = new DefaultTableColumnModel();
		for(int i = 0; i < columns; i++) {
			// modello attributi colonna singola
			TableColumn column = new TableColumn(i, widths[i]);
			column.setHeaderValue(labels[i]);
			columnModel.addColumn(column);
		}
		// la tabella
		JTable table = new JTable(tableModel, columnModel);
		table.setPreferredScrollableViewportSize(new Dimension(350, 100));
		JScrollPane scroll = new JScrollPane(table);
		///////////////////////////////////////////////////
		getContentPane().add(scroll);
		pack();
		setVisible(true);
	}

	public static void main(String[] args) {
		new TableExample();
	}

}