Atualizar JTable, ajuda!

5 respostas
xcah

Olá!

Bom, faz pouco tempo comecei a mexer com swing, agora estou precisando atualizar uma tabela quando clico num botão que adiciona um registro no BD, e a tabela exibe esses registros, então queria que ao adicionar o registro a tabela atualizasse.
Já dei uma boa pesquisa no Google e no GUJ mesmo, tentei algumas coisas etc, mas não consegui resolver… agradeço ajuda se alguém puder!

Não sei se é necessário, mas vou colocar a parte do código referente à tabela e ao botão…

Código que busca os dados no BD e joga prum array e define a tabela (itens e colunas)

private void dadostbl() throws SQLException
    {
    	Flex.fechacon(); // Flex >>  métodos para conectar etc ao BD e retornar os valores
    	Flex.cnc();
    	
    	int i, j =Flex.contaPessoa();
    	array = new Object[j][3]; //array = variável global criada anteriormente
    	                              
    	for (i=0;i<j;i++)
    	{
    		Flex.ret();
    		array[i][0] = Flex.retnome();
    		array[i][1] = Flex.retdpto();
    		array[i][2] = Flex.rettel();
    		
    	}
    	
    	colunas = new String [] // colunas = variável global criada anteriormente
    	                               {
    						"Nome", "Departamento","Telefone"
    	                               };
    	                               
    }

Método que inicia os componentes da aplicação, colocando só a JTable

private void initComponents() throws SQLException {

    	dadostbl();

        gridAgenda = new javax.swing.JTable();
        btnOk_AdcContato = new javax.swing.JButton();

        gridAgenda.setModel(new DefaultTableModel(array,colunas){
        	    /**
			 * 
			 */
			private static final long serialVersionUID = 1L;
				boolean[] canEdit = new boolean [] {
        	        false, false, false
        	    };

        	    public boolean isCellEditable(int rowIndex, int columnIndex) {
        	        return canEdit [columnIndex];
        	    }
        	});
        jScrollPane1.setViewportView(gridAgenda);

        btnOk_AdcContato.setBackground(new java.awt.Color(220,220,220));
        btnOk_AdcContato.setText("Ok");
        btnOk_AdcContato.setBorder(new javax.swing.border.LineBorder(new java.awt.Color(249, 249, 249), 1, true));
        btnOk_AdcContato.setName("btnOk_AdcContato"); // NOI18N
        btnOk_AdcContato.addActionListener(new java.awt.event.ActionListener() {
            public void actionPerformed(java.awt.event.ActionEvent evt) {
                try {
					btnOk_AdcContatoActionPerformed(evt);
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
            }
        });

Função do botão!

protected void btnOk_AdcContatoActionPerformed(ActionEvent evt) throws SQLException {
		// TODO Auto-generated method stub
    	
		String nome = txtNome.getText();
		int telefone = Integer.parseInt(txtTelefone.getText());
		String dpto = "";
		dpto = cbDepto_adcContato.getSelectedItem().toString();
		//System.out.println(dpto);
		
		Flex.cnc();
		
		Flex.cncPegaCOD(dpto);
		
		Flex.insPessoa(nome, telefone, Flex.cod);
		
		txtNome.setText("");
		txtTelefone.setText("");
		
// tentativas xP
/*        tblmd =  new DefaultTableModel(array,colunas);
        tblmd.setRowCount(0);

		for(int i=0; i < gridAgenda.getRowCount(); i++ ){  
            ((DefaultTableModel)gridAgenda.getModel()).removeRow(i);}
        tblmd =  new DefaultTableModel(array,colunas);
		gridAgenda.setModel(tblmd);
		for(int i=0; i < gridAgenda.getRowCount(); i++ ){  
            gridAgenda.repaint(i);}
	*/
        
/*		dadostbl();
		DefaultTableModel tblmd = new DefaultTableModel(array,colunas);
		gridAgenda.setModel(tblmd); */

		Flex.clnMessage();
		Flex.fechacon();
	}

5 Respostas

ViniGodoy

Se você quer mexer com o JTable, tem que aprender como ela funciona. E para isso, terá que escrever seu próprio TableModel.

O DefaultTableModel é usado apenas para exemplo, na prática, criamos um TableModel próprio, filho de AbstractTableModel.

Siga os links da minha assinatura, há diversos exemplos da construção de um TableModel lá.

Marky.Vasconcelos

Maracuja:
Ai Vini, vc sempre com essa do TableModel ne!! hehehe super recorrente!!!

Talvez fosse uma boa ter uma thread fixa com a sua assinatura pro pessoal!! hehe

[]`s

O povo não usa a busca antes de postar algo.

Então temos que continuar insistindo nessa onda contra DefaultTableModel.

xcah

Pessoas, eu concordo com vocês que devemos usar a busca tanto no Google quanto no GUJ antes de postar algo. E bom, também acho que antes de responder algo precisa-se ao menos lê-lo direito, pois como já tinha falado no primeiro post eu pesquisei sim, Google, GUJ etc, tentei inúmeras coisas e não havia conseguido resolver, então criei um tópico para pedir ajuda.

ViniGodoy obrigada, pretendo dar uma estudada nisso logo também, já tinha visto só que por enquanto pareceu-me mais simples e rápido o Default, pelo menos resolvia o que estava precisando por agora.

JMan

Ai Vini, vc sempre com essa do TableModel ne!! hehehe super recorrente!!!

Talvez fosse uma boa ter uma thread fixa com a sua assinatura pro pessoal!! hehe

[]`s

JMan

Marky.Vasconcelos:
Maracuja:
Ai Vini, vc sempre com essa do TableModel ne!! hehehe super recorrente!!!

Talvez fosse uma boa ter uma thread fixa com a sua assinatura pro pessoal!! hehe

[]`s

O povo não usa a busca antes de postar algo.

Então temos que continuar insistindo nessa onda contra DefaultTableModel.

Yep!! Antes de se aprender a programar, devia ser um pré requisito aprender a usar o google e também a busca do GUJ!!! hehehe

[]`s

Criado 26 de abril de 2011
Ultima resposta 26 de abr. de 2011
Respostas 5
Participantes 4