Tõ precisando de uma ajuda para implementar uma J Table no meu programa.
Preciso que a tabela atualize automaticamente a medide que os dados sejam inseridos no banco.
O meu código é esse:
public class Estudos extends JFrame {
String url = "jdbc:postgresql://localhost:5432/Banco";
String usuario= "postgres";
String senha = "postgres";
Connection db = null;
public Estudos()
{
// super("Exemplo");
final DefaultTableModel modelo = new DefaultTableModel();
// constrói a tabela
JTable tabela = new JTable(modelo);
JButton botão = new JButton("atualizar");
// Cria duas colunas
modelo.addColumn("Código");
modelo.addColumn("Nome");
// exibe os dados da tabela MySQL
try{
Class.forName("org.postgresql.Driver");
db = DriverManager.getConnection( url, usuario, senha );
// procedimentos para obter os dados de uma tabela
PreparedStatement ps;
ps = db.prepareStatement( "select codfunc, nome from tabfuncionario " );
ResultSet rs = ps.executeQuery();
while(rs.next()){
int id = rs.getInt("codfunc");
String nome = rs.getString("nome");
modelo.addRow(new Object[]{new Integer(id), nome});
}
// fim procedimento para obter os dados
}
catch(SQLException ex){
System.out.println("SQLException: " + ex.getMessage());
System.out.println("SQLState: " + ex.getSQLState());
System.out.println("VendorError: " + ex.getErrorCode());
}
catch(Exception e){
System.out.println("Problemas ao tentar conectar com o banco de dados");
}
// fim MySQL
tabela.setPreferredScrollableViewportSize(new Dimension(350, 50));
Container c = getContentPane();
c.setLayout(new FlowLayout());
JScrollPane scrollPane = new JScrollPane(tabela);
c.add(scrollPane);
c.add(botão);
scrollPane.setBounds(770,770,20,20);
setSize(400, 300);
setVisible(true);
}
Alguém conhece um tutorial ou pode me dar um exemplo !!!
Vc pode fazer o que o edilson disse, se a acao de update no banco esta sendo acionada pela sua GUI.
Mas uma vez eu tive que fazer isso, mas nao era a minha GUI que estava dando update no banco de dados, na verdade era um servico no meu back-end, a minha JTable tinha que ser atualizada com esse dados entao eu tive que criar um thread que fazia a query no banco buscando por updates.
Usei a classe Timer pra fazer isso, mais ou menos assim :
Timer t1 = new Timer((10000/2), new ActionListener() {
public void actionPerformed(ActionEvent e) {
try {
// aqui vc coloca o codigo pra fazer a query e atualizar a sua JTable.
} catch (Exception x) {
x.printStackTrace();
}
}
});
t1.setInitialDelay(0);
t1.start();