Duvida Pegar Dados da JTable

32 respostas
colored

Bom to montado uma tela aki…
Ai eu seto na table alguns serviços prestados, ai qdo acaba os serviços tem um button q serve pra grava
esses dados no banco,…
mas como eu faço pra recuperar esses dados da table?

Se alguem puder ajudar ai valeu =]

32 Respostas

Gobain

aqui tem um exemplo de como usar =D

esse é o método do meu exemplo
public Set getContasCorrentes() {  
         Set ccs = new HashSet();  
         for(ContaCorrente cc : contas) ccs.add(cc);  
           
         return ccs;  
}
ele tá tosco, então vc pode mudar pra algo como
public Set getContasCorrentes() {  
       return new LinkedHashSet<ContasCorrentes>(contas);  
}
colored

Nossa cara ta mo bolo akele topico kkkk…

N consegui axar nd…

Me direciona ai por favor.

Gobain

é o meu último post
pelo link se vc esperar carregar até o final cai direto nele
tem um model q eu criei… da pra melhorar um bocado ele, mas ajuda a entender

colored

Bom axo q o q eu preciso é isso neh…
Tipo o q eu kero é so saber q comando q uso pra poder pegar os dados da table…

public Object getValueAt(int rowIndex, int columnIndex) {   
        switch(columnIndex) {   
            case 0:   
                return contas.get(rowIndex).getBanco().getCod_banco();   
            case 1:   
                return contas.get(rowIndex).getNum_agencia();   
            case 2:   
                return contas.get(rowIndex).getNum_conta_corrente();   
            case 3:   
                return contas.get(rowIndex).getNme_titular();   
            default:   
                return null;   
        }   
    }
Gobain

Com o q q vc tá trabalhando no teu banco? jdbc direto ou com hibernate ou algo do gênero?
Se vc quiser tirar os dados célula a célula daí então é só fazer

Object dado = tabela.getValueAt(linha,coluna);
colored

Era isso q eu keria =P…

Tipo deu uma zica da porra aki…
Exception de Memoria… o pc n ta nem conseguindo abrir a tela kkk

mas to fazendo com Drivezin de Sql.

Gobain

É mais tranquilo vc fazer um TableModel e trabalhar em cima dele… nem q seja um objeto estilo ObjetoLinhaDaTable que contém todas as colunas…
Eu acho mais prático do q vc ficar pegando cada célula individualmente e tratando o objeto

RobsonFagundes

tenta assim

// prenche fields com dados da tabela
    private void preencherFields() {
        jtpDestinatarios.setSelectedIndex(1);
        jtfCodigo.setEditable(false);
        //jtbDestinatarios.getRowSorter().toggleSortOrder(int numeroColuna);
        if (jtbDestinatarios.getSelectedRow() != -1) {
            int linhaSelecionada = jtbDestinatarios.getSelectedRow();
            jtfCodigo.setText((String) String.valueOf(tabelaModelo.getValueAt(linhaSelecionada, 0)));
            jtfDestinatario.setText((String) tabelaModelo.getValueAt(linhaSelecionada, 1));
            jtfAC.setText((String) tabelaModelo.getValueAt(linhaSelecionada, 2));
            jtfEndereco.setText((String) tabelaModelo.getValueAt(linhaSelecionada, 3));
            jtfComplemento.setText((String) tabelaModelo.getValueAt(linhaSelecionada, 4));
            jftfCep.setText((String) tabelaModelo.getValueAt(linhaSelecionada, 5));
            jtfCidade.setText((String) tabelaModelo.getValueAt(linhaSelecionada, 6));
            jtfUF.setText((String) tabelaModelo.getValueAt(linhaSelecionada, 7));
        }

    }
colored

Nossa q brisa meu programa deu uma doidera aki

[code]
List list = new ArrayList();
NotaDAO dao = new NotaDAO();
list = dao.TrazerNomes();

[code]

Mas Gobain Tem como eu joga tudo as linha num model e ja jogar direto pro banco?

colored

interessante Robson vo tenta usa ele

Gobain

colored:
Nossa q brisa meu programa deu uma doidera aki

List<NotaFiscal> list = new ArrayList<NotaFiscal>();
		NotaDAO dao = new NotaDAO();
		list = dao.TrazerNomes();

Mas Gobain Tem como eu joga tudo as linha num model e ja jogar direto pro banco?

Então, com isso vc pode fazer assim depois que carregar do banco

((TeuModel)tuaTabela.getModel()).setNotasFiscais(list);

Com isso vc preenche os dados de acordo com o q vc definir lá no método setValueAt do TableModel.

Depois para vc carregar da tabela td pronto pra jogar no BD vc vai fazer algo como

list = ((TeuModel)tuaTabela.getModel()).getNotasFiscais(); dao.salvarListaDeNotas(list);

RobsonFagundes

intaum eu useei ele pra preecher meus fields com as info da tebela
se viu ali neh q pego o valor da linha e seto no JTextField…
blz qualquer coisa da um tok ok
Abraço

colored

Mano q zica nunca alguma coisa funciona e para assim de uma hora pra otra…

public List<NotaFiscal> TrazerNomes() throws SQLException {
		List<NotaFiscal> list = new ArrayList<NotaFiscal>();
		String sql = "Select Nm_Empresa_Cliente From Cliente";
		PreparedStatement ps = c.prepareStatement(sql);
		ResultSet rs = ps.executeQuery();
		
		while(rs.next()){
			NotaFiscal nota = new NotaFiscal();
			nota.setNm_Cliente(rs.getString("Nm_Empresa_cliente"));
			list.add(nota);
			System.out.println(nota);
		}
		return list;	
	}
o Outro metodo
	
	public void test(String Nome) throws SQLException{     
		  
	    Connection c = ConnectionFactory.CriarConexao();
	    String sql = "Select 1 from Cliente where Nm_Empresa_Cliente = ?";     
	    PreparedStatement ps = c.prepareStatement(sql);   
	    ps.setString(1, Nome);        
	    ResultSet rs = ps.executeQuery();     
	         
	    if (rs.next()){
	    	NotaFiscal nota = new NotaFiscal();
	    	nota.setEnd_Cliente(rs.getString("End_Cliente"));
	    }
	       
	    rs.close();     
	    ps.close();     
	       
	}

Ai da esse erro vc imagina q barato q é esse to de cabeça kente agora de pensa o dia todo fazendo umas parada…

se souber blz se n amanha eu penso com mais calma

Essa Exception
Exception in thread “main” java.lang.OutOfMemoryError: Java heap space

Gobain

Esse erro na verdade é q vc tá estourando a memória da tua vm… aumenta um pouco pra trabalhar, ou veja onde q está com problemas e não está liberando a memória depois de usar…

colored

Onde eu aumento.;…?

RobsonFagundes

Me diz uma coisa vc ta limpando da memoria sua aplicacao tipow um dispose…

SuaTela.this.dispose();

da uma olhada ai pq tua VM ta com a memoria cheia ok
Abraço

colored

Nossa akele package com akelas classes ja eram…

Hoje eu dei uma arruma em tudo bom q fico mais enxuto…
Bom voltando…

Robson por akele seu codigo que ta mais de entende …

Pra pegar o texto de uma celula é assim?
Nomedatable.getvalue(Aki eu num lembro o q poe, a linha que ker, coluna q ker) é isso?

RobsonFagundes

colored:
Nossa akele package com akelas classes ja eram…
Pra pegar o texto de uma celula é assim?
Nomedatable.getvalue(Aki eu num lembro o q poe, a linha que ker, coluna q ker) é isso?

Bom dia Colored
justamente

(tabelaModelo.getValueAt(linhaSelecionada, 0)));

tabelaModelo == nome da tabela
linhaSelecionada == int linhaSelecionada = jtbDestinatarios.getSelectedRow(); pega linha selecionada no meu caso eu usei isso qndo o user clica em cima da celula…
e o 0 == a coluna selecionada…
no meu caso eu setei isso em um JTextField

T+ Abraço

colored

Bomdia =]

No caso vc faria um eskema assim…

int selectedLine = table.getSelectedRow();
tx1.setText(String.valueOf(table.getValueAt(selectedLine, 0)));

Agora no meu caso como eu kero jogar tudo q tem na table pro banco…
Eu vo te q pegar o tanto de linha neh da table…

e fazer um for pra ir add neh?
To perdidao =D

RobsonFagundes

[quote=colored]Bomdia =]

int selectedLine = table.getSelectedRow();
tx1.setText(String.valueOf(table.getValueAt(selectedLine, 0)));

ta e me diz uma coisa os dados q esta listando na tabela, vc ta tirando daonde ???
o usuario q digita isso ??? ou vc faz uma consulta de algum lugar por ex: BD para preeche-la ???

colored

Tipo assim e como se fosse assim:

Tem uma combo com varios nomes de empresas cadastradas. entao eu fiz um select ali estao setadas na combo.

Ai qdo eu escolho uma ele executa outra query q preenche campos cadastrais,
Ai tem alguns campos pra digitar que, trabalho o funcionario fez ex: Instalação Redes Linux…

  • um campo de qtas horas durou esse serviço e um campo de valor do serviço…

Um botao q adiciona isso na table, entao nela tem varios serviços q empresa pediu e foram prestados…
Em baixo da table tem um botao para poder gravar esse dados no banco…

Entedeu =]

RobsonFagundes

Hammm entendi
ta e vc tem um Bean q representa tds esse atributos ai neh tipow “empresasCadastradas”
bom axo q da pra vc fazer o seguinte instancia um objeto do tipow desse bean ai e fais um

empresasCadastradas eC = new empresasCadastradas();
eC.setCodigoEmpresa(String.valueOf(SuaTable.getValueAt(selectedLine, 0)));

dai vc fais um laço pra preencher os Atributos do seu bean com os dados da Jtable depois vc manda grava seu bean… so q axo q vc tera q fazer um ArrayList desse seu bean se vc tiver mais de um empresa listada na tabela…
manja…

colored

pensei assim ja funfo agora eu preciso de um for que navegue por toda table…

Aki ta add apenas 1 celula no banco mas primeiro vo axa o eskema dps eu ajeito tudo…

int sizecolumn = table.getColumnCount();
		
		if(sizerow == -1){
			JOptionPane.showMessageDialog(null, "Tabela Vazia");
		}
		NotaFiscal nota  = new NotaFiscal();
		NotaDAO dao = new NotaDAO();
		nota.setNm_Cliente(String.valueOf(table.getValueAt(sizerow -1, 1)));
		
		dao.PegardaTable(nota);
		System.out.println("OK");

Tipo mais ou menos pensei assim

for(int i = 0; i < sizerow - 1; i++){
			for(int j = 0; j < sizecolumn -1;j++){
				nota.setNm_Cliente(String.valueOf(table.getValueAt(j, i)));
dao.PegardaTable(nota);
			}
		}

Mas na moral essa vez eu preciso mesmo de ajuda eu n consigo entender 2 for juntos…
kkk… tenho mo dificuldade com isso

RobsonFagundes

esse teu

nota.setNm_Cliente(String.valueOf(table.getValueAt(sizerow -1, 1))); dao.PegardaTable(nota); te retorna os atributos da Nota q vc selecionou na tabela ???

pq vc nao fais um ArrayList do q retorna tipo assim

arlTabela = dao.PegardaTable(nota);

e varre este array pra pega o q vc quer assim

for (int i = 0; i < arlTabela.size(); i++) { nota assoArl = (nota) arlTabela.get(i); Vector linha = new Vector(); linha.add(assoT.getCodNota()); tabelaModelo.addRow(linha);

teh de tarde

colored

Nossa mano sei la… consigui nao kkk…

vamos por partes…
A minha ideia era No NotaDAO eu criei esse metodo.

public void PegardaTable(NotaFiscal nota) {
		try{
		String sql = "Insert into NotaFiscal (Nm_Cliente)values (?)";
		PreparedStatement ps = c.prepareStatement(sql);
		ps.setString(1, nota.getNm_Cliente());
		ps.execute();
		ps.close();
		}
		catch (SQLException e) {
			e.printStackTrace();
		}
	}

que so iria apenas ajeitar o insert

Ai eu iria fazer um outro agora para mostrasse o q akele metodo deveria inserir certo =]…

para eu jogar tudo akilo numa arraylist eu teria q fazer um For

mas eu n consigo add assim tem alguma ideia melhor?

arlTabela.add(nota.setNm_Cliente(String.valueOf(table.getValueAt(i, 0)));
RobsonFagundes

ha usa um Vector mesmo… so sugeri o Array pq um colega ai
me disse q era pra usar ArraList tenta com Vector ai pra ve se da
tipo depois eh mais sussa pra pega dele e passa pro teu dao

colored

Eu fiz assim mas sei la o q q pega

for(int i = 0; i < sizerow - 1; i++){
			 nota.setId_Nota(Long.parseLong(tx1.getText()));
			 nota.setId_Cliente(Long.parseLong(String.valueOf(table.getValueAt(i, 0))));
			 nota.setNm_Cliente(String.valueOf(table.getValueAt(i, 1)));
			 nota.setEnd_Cliente(String.valueOf(table.getValueAt(i, 2)));
			 nota.setNr_Cliente(String.valueOf(table.getValueAt(i, 3)));
			 nota.setTel_Cliente(String.valueOf(table.getValueAt(i, 4)));
			 nota.setDs_servico(String.valueOf(table.getValueAt(i, 5)));
			 nota.setTot_horas(String.valueOf(table.getValueAt(i, 6)));
			 nota.setValor_servico(Double.parseDouble(String.valueOf(table.getValueAt(i, 7))));
			 arraylist.add(nota);
			 dao.PegardaTable((NotaFiscal) arraylist.get(i));
			 System.out.println("ok");
		}

Pra 2 campos tava funfando agora pra todos n… pior q nem erro da… vo te q fazer um por um

colored

AE CONSEGUI o///

Valeu Robson Ajudo D+

Falow

RobsonFagundes

Valeu colored precisar estamos ai… se ajudamos hehehhehehhehehe
Abraço

RobsonFagundes

colored:
AE CONSEGUI o///

Valeu Robson Ajudo D+

Falow

Boa Tarde colored , td blz colega, agora eu preciso da sua ajuda …
meio q copie sua logica pra resolver um problema nosso aki.

A parada é a seguinte fiz um laço pra varrer minha tabela e setar os valores no meu bean, para grava-lo posteriomente, assim:

//Varre a jtabela Empregos Anteriores e passa parao bean  
            //Aba Expregos Anteriores
            int linhasTab = tabelaModeloEmpAnteriores.getColumnCount();
            for (int i = 0; i < linhasTab-1; i++) {
                incrementaCodEmpAnt();
                empAnt.setCodEmpAnteriores(codExp);
                empAnt.setEmpregado_codEmpregado(new Integer(jtfCodEmpregado.getText()));
                empAnt.setEmpresaEmpA(String.valueOf(tabelaModeloEmpAnteriores.getValueAt(i, 0)));
                empAnt.setEnderecoEmpA(String.valueOf(tabelaModeloEmpAnteriores.getValueAt(i, 1)));
                empAnt.setFoneEmpA(String.valueOf(tabelaModeloEmpAnteriores.getValueAt(i, 2)));
                empAnt.setFalarComEmpA(String.valueOf(tabelaModeloEmpAnteriores.getValueAt(i, 3)));
                empAnt.setDataAdmEmpA(String.valueOf(tabelaModeloEmpAnteriores.getValueAt(i, 4)));
                empAnt.setDataDemissaoEmpA(String.valueOf(tabelaModeloEmpAnteriores.getValueAt(i, 5)));
                empAnt.setMotivoSaidaEmpA(String.valueOf(tabelaModeloEmpAnteriores.getValueAt(i, 6)));
                empAnt.setUltimoSalarioEmpA(String.valueOf(tabelaModeloEmpAnteriores.getValueAt(i, 7)));
                //Chama a instancia do DAO e passa pra ele os dados cadastrais atraves do bean instanciado
                daoG.salvar(empAnt);
            }

Ta so q a zika é a seguinte, ta gravando td certinho no BD so q ta retornando a seguinte exception

Exception occurred during event dispatching:
java.lang.ArrayIndexOutOfBoundsException: 2 >= 2
        at java.util.Vector.elementAt(Vector.java:427)
        at javax.swing.table.DefaultTableModel.getValueAt(DefaultTableModel.java:632)

Ai Debuguei essa rotina e vi onde ta a zika.
O

int linhasTab = tabelaModeloEmpAnteriores.getColumnCount(); me retorna o int “8” que consequentemente é o numero de colunas da minha tabela, intaum so q o getValue começa em 0 certo!!! eu tentei coloca um -1 no linhasTab asssim:

for (int i = 0; i < linhasTab-1; i++)

mais mesmo asssim nao da … se sabe se aconteceu o mesmo com vc e como vc faz pra resolver
Ate + Abraço

Gobain

Pq vc não tenta implementar um TableModel ao invés de usar o Default e ter q varrer toda a tabela pra tratar seus dados?
Vc teria 1/6 do trabalho, e agiliza tb na hr de trabalhar com o BD. Comentei isso lá no começo do tópico… vale dar uma olhada.

colored

Tipo vc ker pegar dados de uma tabela joga no bean e depois inserir em otra tabela?

Num entendi nd kkk…

Ai no trampo eu tento te ajuda teh +

Criado 16 de abril de 2008
Ultima resposta 24 de abr. de 2008
Respostas 32
Participantes 3