Problemas com JTable

Bom dia galera, estou com um pequeno probleminha usando um TableModel editado, segue o código:

public class TableModelPedido extends AbstractTableModel {
	
	private static final long serialVersionUID = 1L;
	private List<Pedido> array;
	private String[] colunas = new String[] {"CRACHA","NOME FUNCIONÁRIO","EMPRESA","FEREIÇÃO","CAFÉ DA MANHÃ","DATA"};

	public TableModelPedido() {
		array = new ArrayList<Pedido>();
	}

	public TableModelPedido(List<Pedido> pedidos) {
		this();
		array.addAll(pedidos);
	}

	@Override
	public Class<?> getColumnClass(int columnIndex) {
		return String.class;
	}

	@Override
	public int getColumnCount() {
		return colunas.length;
	}

	@Override
	public String getColumnName(int columnIndex) {
		return colunas[columnIndex];
	}

	@Override
	public int getRowCount() {
		return array.size();
	}

	@Override
	public Object getValueAt(int rowIndex, int columnIndex) {
		Pedido pedido = array.get(rowIndex);

		switch (columnIndex) {
		case 0:
			return pedido.getIdFuncionario(); // CRACHA
		case 1:
			return pedido.getFuncionario(); // NOME FUNCIONARIO
		case 2:
			return pedido.getEmpresa(); // EMPRESA
		case 3:
			return pedido.getRefeicao(); // REFEIÇAO
		case 4:
			return pedido.getCafeDaManha(); // CAFE DA MANHA
		case 5:
			return pedido.getData(); // DATA
		default:
			return null;
		}
	}

	@Override
	public void setValueAt(Object valor, int rowIndex, int columnIndex) {
		Pedido pedido = array.get(rowIndex);

		switch (columnIndex) {
		case 0:
			pedido.setIdFuncionario(valor.toString());
			break;
		case 1:
			pedido.setFuncionario(valor.toString());
			break;
		case 2:
			pedido.setEmpresa(valor.toString());
			break;
		case 3:
			pedido.setRefeicao(valor.toString());
			break;
		case 4:
			pedido.setCafeDaManha(valor.toString());
			break;
		case 5:
			pedido.setData(valor.toString());
			break;
		}
		fireTableCellUpdated(rowIndex, columnIndex);

	}
	
	public void setValueAt(Pedido valor, int rowIndex) {  
        Pedido pedido = array.get(rowIndex); // CARREGA ITEM DA LINHA QUE DEVE SER ALTERADA
  
        pedido.setIdFuncionario(valor.getIdFuncionario());
        pedido.setFuncionario(valor.getFuncionario());
        pedido.setEmpresa(valor.getEmpresa());  
        pedido.setRefeicao(valor.getRefeicao());
        pedido.setCafeDaManha(valor.getCafeDaManha());
        pedido.setData(valor.getData());
  
        fireTableCellUpdated(rowIndex, 0);
        fireTableCellUpdated(rowIndex, 1);
        fireTableCellUpdated(rowIndex, 2); 
        fireTableCellUpdated(rowIndex, 3);  
        fireTableCellUpdated(rowIndex, 4);
        fireTableCellUpdated(rowIndex, 5);
  
    }  
	
	public void adiciona(Pedido pedido) {
		array.add(pedido);

		fireTableRowsInserted(array.size() - 1, array.size() - 1);
	}
	
	public void addPedido(Pedido item) {  
        // ADICIONA O REGISTRO  
        array.add(item);  
  
        int ultimoIndice = getRowCount() - 1;  
  
        fireTableRowsInserted(ultimoIndice, ultimoIndice);  
    } 

	public void remove(int indice) {
		array.remove(indice);
		fireTableRowsDeleted(indice, indice);
	}

	public int getIndice(Pedido pedido) {
		return array.indexOf(pedido);
	}

	public void adicionaLista(List<Pedido> lista) {
		int i = array.size();
		array.addAll(lista);
		fireTableRowsInserted(i, i + lista.size());
	}

	public void limpaLista() {
		int i = array.size();
		array.clear();
		fireTableRowsDeleted(0, i - 1);
	}

Não estou conseguindo fazer mostrar o nome das colunas e gostaria de saber como faço para alterar o tamanho da colunas (largura).

Olá,
eu indiquei tamanho de coluna na inicialização da tabela, colocando o código abaixo:

TableColumn colcheck = this.getColumnModel().getColumn(numeroDaColuna); colcheck.setMaxWidth(suaLargura); colcheck.setPreferredWidth(suaLargura); colcheck.setWidth(suaLargura);
Quanto a sua pergunta principal, aparentemente seu código está ok.Está igual ao do tutorial da oracle:

[code]class MyTableModel extends AbstractTableModel {
private String[] columnNames = …//same as before…
private Object[][] data = …//same as before…

public int getColumnCount() {
    return columnNames.length;
}

public int getRowCount() {
    return data.length;
}

public String getColumnName(int col) {
    return columnNames[col];
}

public Object getValueAt(int row, int col) {
    return data[row][col];
}

[/code]
em: http://docs.oracle.com/javase/tutorial/uiswing/components/table.html#data

Boa tarde, obrigado pelo código.

Só me resta agora resolver o problema de não aparecer o nome das colunas, realmente estou sem idéia de como resolver isso, já tentei várias coisas mas nada.

Alguém tem alguma idéia???