Como pegar o Objeto da Linha Selecionada do JTable e distribuir em TextFields de Outro Form

Iae Galera, como já disse antes sou novo em Java e tenho muita dúvida. Tenho que entregar um software para um Projeto da Faculdade e o bixo ta pegando.Tenho o seguinte cenário um projeto em cinco camadas,tenho minha básica e as DAOs referentes as classes. Tenho um JTable usando DefaultTableModel que lista por exemplo todos os funcionários e nessa tela eu tenho o botão para alterar que abre um outro Form com todos os campos referentes ao Funcionário,queria pegar o Funcionário selecionado na Tabela e ao clicar no botão alterar abrir o formulário com todos os campos preenchidos referentes as informações do mesmo.

Segue meu Table Model:

public class FuncionarioTableModel extends DefaultTableModel{
public FuncionarioTableModel() {
super(new Object[][]{}, new String[] {“ID”, “Nome”, “Cpf”,“Cargo”,“DataAdmissão”,“Rua”,“Número”,“Cidade”,“CEP”});
}

public void adicionarPessoa(Funcionario f){
	Object[] linha = new Object[9];
	linha[0] = f.getCodPessoa();
	linha[1] = f.getNome();
	linha[2] = f.getCpf();
	linha[3] = f.getCargo();
	linha[4] = f.getDataAdmissao();
	linha[5] = f.getEndereco().getRua();
	linha[6] = f.getEndereco().getNumero();
	linha[7] = f.getEndereco().getCidade();
	linha[8] = f.getEndereco().getCep();
	
	addRow(linha);
}

public void limpar(){
	setRowCount(0);
}

@Override
public boolean isCellEditable(int row, int column) {
	return false;
}

 }

Ai está meu TableModel que também não lista todos os atributos do meu Funcionário,preciso que ao clicar em alterar se abra um novo InternalForm
que já tenho implementado,já esta abrindo e tudo mas sem nenhuma informação,será possível fazer isso?
Desde já agradeço.

Comece criando um TableModel filho de AbstractTableModel. Esqueça o DefaultTableModel.

Dê uma olhada no link ao lado do texto em vermelho da minha assinatura que tem diversos exemplos. Tente fazer o seu e poste aqui as dúvidas.

Agora queria saber como Faço pra poder pegar os meus Funcionários e Listar na Tabela.
Antes com o DefaulTableModel fazia assim:

FuncionarioTableModel modelo = (FuncionarioTableModel) tabela.getModel();
for(Funcionario f: Fachada.getInstancia().listarFuncionario()){
modelo.adicionarFuncionario(f);
}
queria saber como preencher agora usando a Fachada e meu método DAO que lista todos os funcionarios que estão no salvos no banco.

Sim,também ainda estou com minha maior Dúvida.
Como vou fazer para passar os dados de uma Linha selecionada para um InternalForm que tem todos os campos referentes ao Objto,pegando os dados referentes a Linha selecionada.
Esse é meu TableModel de Teste.

public class TesteTableModel extends AbstractTableModel {

// Constantes representando o índice das colunas
private static final int ID = 0;
private static final int EMPRESA = 1;
private static final int TIPOCONTRATO = 2;
private static final int DATAINI = 3;
private static final int DATAFIM = 4;

// Lista de Sócios a serem exibidos na tabela
private List<Contrato> linhas;

// Array com os nomes das colunas.
private String[] colunas = new String[] {"ID", "Empresa", "Tipo de Contrato","Data Inicial", "Data Final"};


// Cria um SocioTableModel sem nenhuma linha
public TesteTableModel() {
	linhas = new ArrayList<Contrato>();
}

// Cria um SocioTableModel contendo a lista recebida por parâmetro
public TesteTableModel(List<Contrato> listaDeContratos) {
	linhas = new ArrayList<Contrato>(listaDeContratos);
}

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

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

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

@Override
public Class<?> getColumnClass(int columnIndex) {
	switch (columnIndex) {
	case ID:
		return long.class;
	case EMPRESA:
		return String.class;
	case TIPOCONTRATO:
		return String.class;
	case DATAINI:
		return Date.class;
	case DATAFIM:
		return Date.class;	
	default:
		// Não deve ocorrer, pois só existem 4 colunas
		throw new IndexOutOfBoundsException("columnIndex out of bounds");
	}
}

@Override
public boolean isCellEditable(int row, int column) {
	return false;
}

@Override
public Object getValueAt(int rowIndex, int columnIndex) {
	// Pega o sócio referente a linha especificada.
	Contrato c = linhas.get(rowIndex);

	switch (columnIndex) {
	case ID:
		return c.getCodContrato();
	case EMPRESA:
		return c.getJuridica();
	case TIPOCONTRATO:
		return c.getTipoContrato();
	case DATAINI:
		return c.getDataInicio();
	case DATAFIM:
		return c.getDataFinal();	
	default:
		// Não deve ocorrer, pois só existem 4 colunas
		throw new IndexOutOfBoundsException("columnIndex out of bounds");
	}
}

@Override
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
	// Pega o sócio referente a linha especificada.
	Contrato c = linhas.get(rowIndex);

	switch (columnIndex) {
	case ID:
		c.setCodContrato ((Long) aValue);
		break;
	case EMPRESA:
		c.setJuridica((Juridica) aValue);
		break;
	case TIPOCONTRATO:
		c.setTipoContrato((TipoDeContrato) aValue);
		break;
	case DATAINI:
		c.setDataInicio((Date) aValue);
		break;
	case DATAFIM:
		c.setDataFinal((Date) aValue);
		break;	
	default:
		// Não deve ocorrer, pois só existem 4 colunas
		throw new IndexOutOfBoundsException("columnIndex out of bounds");
	}
	
	fireTableCellUpdated(rowIndex, columnIndex); // Notifica a atualização da célula
}

// Retorna o sócio referente a linha especificada
public Contrato getSocio(int indiceLinha) {
	return linhas.get(indiceLinha);
}

/* Remove o sócio da linha especificada. */
public void removeContrato(int indiceLinha) {
	// Remove o registro.
	linhas.remove(indiceLinha);

	// Notifica a mudança.
	fireTableRowsDeleted(indiceLinha, indiceLinha);
}

Por favor, pode editar seu tópico e usar a tag code? Senão fica muito difícil de ler.
Basta seleciona-lo e clicar no botão Code. Caso não saiba fazer isso, leia:
http://www.guj.com.br/java/50115-voce-e-novo-no-guj-vai-criar-um-topico-e-colar-seu-codigo-fonte-leia-aqui-antes-por-favor

Para passar de uma janela para outra, basta agora passar o contato selecionado por parâmetro:

[code]int linhaSelecionada = table.getSelectedRow();
if (linhaSelecionada == -1) {
return; //Nada selecionado
}

TesteTableModel model = (TesteTableModel)table.getModel();
Contato selecionado = model.getContato(linhaSelecionada);
ContatosDialog cf = new ContatosDialog(selecionado);
cf.setVisible(true);[/code]

Como janelas são objetos como outros quaisquer, você pode usar seus construtores e métodos para transferir dados, normalmente.
Por exemplo, esse seria o construtor do ContatosDialog:

[code]public class ContatosDialog extends JDialog {
private Contato contato;
public ContatosDialog(Contato contato) {
super(“Atualização do contato”, true);
this.contato = contato;
//Aqui viria a formatação da janela
}

//Resto da classe da janela aqui

}
[/code]