Como pegar o Objeto da Linha Selecionada do JTable e distribuir em TextFields de Outro Form
5 respostas
J
jeninho
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.
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.
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 colunasprivatestaticfinalintID=0;privatestaticfinalintEMPRESA=1;privatestaticfinalintTIPOCONTRATO=2;privatestaticfinalintDATAINI=3;privatestaticfinalintDATAFIM=4;// Lista de Sócios a serem exibidos na tabelaprivateList<Contrato>linhas;// Array com os nomes das colunas.privateString[]colunas=newString[]{"ID","Empresa","Tipo de Contrato","Data Inicial","Data Final"};// Cria um SocioTableModel sem nenhuma linhapublicTesteTableModel(){linhas=newArrayList<Contrato>();}// Cria um SocioTableModel contendo a lista recebida por parâmetropublicTesteTableModel(List<Contrato>listaDeContratos){linhas=newArrayList<Contrato>(listaDeContratos);}@OverridepublicintgetRowCount(){returnlinhas.size();}@OverridepublicintgetColumnCount(){returncolunas.length;}@OverridepublicStringgetColumnName(intcolumnIndex){returncolunas[columnIndex];};@OverridepublicClass<?>getColumnClass(intcolumnIndex){switch(columnIndex){caseID:returnlong.class;caseEMPRESA:returnString.class;caseTIPOCONTRATO:returnString.class;caseDATAINI:returnDate.class;caseDATAFIM:returnDate.class;default:// Não deve ocorrer, pois só existem 4 colunasthrownewIndexOutOfBoundsException("columnIndex out of bounds");}}@OverridepublicbooleanisCellEditable(introw,intcolumn){returnfalse;}@OverridepublicObjectgetValueAt(introwIndex,intcolumnIndex){// Pega o sócio referente a linha especificada.Contratoc=linhas.get(rowIndex);switch(columnIndex){caseID:returnc.getCodContrato();caseEMPRESA:returnc.getJuridica();caseTIPOCONTRATO:returnc.getTipoContrato();caseDATAINI:returnc.getDataInicio();caseDATAFIM:returnc.getDataFinal();default:// Não deve ocorrer, pois só existem 4 colunasthrownewIndexOutOfBoundsException("columnIndex out of bounds");}}@OverridepublicvoidsetValueAt(ObjectaValue,introwIndex,intcolumnIndex){// Pega o sócio referente a linha especificada.Contratoc=linhas.get(rowIndex);switch(columnIndex){caseID:c.setCodContrato((Long)aValue);break;caseEMPRESA:c.setJuridica((Juridica)aValue);break;caseTIPOCONTRATO:c.setTipoContrato((TipoDeContrato)aValue);break;caseDATAINI:c.setDataInicio((Date)aValue);break;caseDATAFIM:c.setDataFinal((Date)aValue);break;default:// Não deve ocorrer, pois só existem 4 colunasthrownewIndexOutOfBoundsException("columnIndex out of bounds");}fireTableCellUpdated(rowIndex,columnIndex);// Notifica a atualização da célula}// Retorna o sócio referente a linha especificadapublicContratogetSocio(intindiceLinha){returnlinhas.get(indiceLinha);}/* Remove o sócio da linha especificada. */publicvoidremoveContrato(intindiceLinha){// Remove o registro.linhas.remove(indiceLinha);// Notifica a mudança.fireTableRowsDeleted(indiceLinha,indiceLinha);}
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:
publicclassContatosDialogextendsJDialog{privateContatocontato;publicContatosDialog(Contatocontato){super("Atualização do contato",true);this.contato=contato;//Aquiviriaaformataçãodajanela}//Restodaclassedajanelaaqui}