Ajuda com Jtable

4 respostas
E

Pessoal,

Tenho um código aqui que conecta no banco de dados e lista as tuplas em uma JTable.
Nesse jTable é possível alterar os dados nas linhas, porém preciso que essa lteração seja feita também no banco de dados.
Nesse código, eu utilizo o DefaultTableModel e o professor exige que utilizemos esse recurso.
Vi tópicos sobre DAO e me parecem ser menos complicados, mas nesse caso tenho que usar o DefaultTable MOdel mesmo.

Se alguém puder me dar uma ajuda, agradeço muito.

import java.awt.BorderLayout;

import java.awt.GridLayout;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.ResultSetMetaData;

import java.sql.SQLException;

import java.sql.Statement;
import javax.swing.JFrame;

import javax.swing.JOptionPane;

import javax.swing.JPanel;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.event.CellEditorListener;

import javax.swing.event.ChangeEvent;

import javax.swing.table.DefaultTableModel;
public class Jtable_ResultSet extends JFrame

implements CellEditorListener{

String[] colunasTabela =

new String[]{serial,titulo,

descricao,duracao};

static final String DATABASE_URL =

jdbc:mysql://127.0.0.1:3306/locadora;
JTable tab;
DefaultTableModel modeloTabela;

public Jtable_ResultSet(){

	Connection con = null;
	Statement stm = null;
	ResultSet rs = null;
	try{
		//Table Model
		modeloTabela = 
			new DefaultTableModel(null,colunasTabela);
		tab = new JTable();
		tab.setModel(modeloTabela);
		//DB connection
		con = DriverManager.getConnection(
			DATABASE_URL, "root", "root");
		stm = con.createStatement();
		rs = stm.executeQuery("select * from dvd");
		while(rs.next()){
			modeloTabela.addRow(new String[]{
					Integer.toString(
							rs.getInt("serial")),
					rs.getString("titulo"),
					rs.getString("descricao"),
					Integer.toString(rs.getInt("duracao"))
					
			});
	
			
		}
		tab.setEnabled(true);
		JPanel painelTabela = new JPanel();
		painelTabela.add(new JScrollPane(tab));
		painelTabela.setLayout(new GridLayout(1, 1));
		add(painelTabela, BorderLayout.CENTER);
		tab.getDefaultEditor(String.class).addCellEditorListener(this);
		

	}catch(SQLException s){
		System.err.println(s);
	}catch(Exception e){
		System.err.println(e);
	}
	
}



@Override
public void editingCanceled(ChangeEvent arg0) {
	JOptionPane.showMessageDialog(null, 
			"Operação Cancelada");
	
}



@Override
public void editingStopped(ChangeEvent arg0) {
	JOptionPane.showMessageDialog(null, 
			"Operação Finalizada: "+
			tab.getSelectedRow()+"  "+  //obtém a linha selecionada
			tab.getModel().getValueAt(
					tab.getSelectedRow(), 1));//obtém o valor da coluna 0
	modeloTabela.removeRow(tab.getSelectedRow());
	tab.validate();
	
}

}

4 Respostas

R

Voce precisar criar um evento no JTable, por exemplo, focusLost, a cada vez que o focus do usuario sair da JTable, ele executara um insert com os dados da JTable.

E

rsrsrs. Fiquei na mesma…

R

Procure sobre Eventos em Java.

http://docs.oracle.com/javase/tutorial/uiswing/components/table.html

Nao posso lhe ajudar mais que isso, pois nao sei o que voce vai fazer, so sei o que voce quer fazer, alem do mais, é trabalho de escola, eu evito ser muito claro quando a duvida tem a ver com esse tipo de ajuda.

Boa Sorte =D

E

Esse código puxa os registros do banco, quero fazer a alteração direto no JTable e então gravar no banco novamente…

Criado 19 de novembro de 2012
Ultima resposta 19 de nov. de 2012
Respostas 4
Participantes 2