Pessoal, boa noite.
Estou fazendo um sistema pra facul. Estou usando o JTable para gerar a lista de dados do banco. Tenho uma janela de departamento. Nesta, existe um objeto JTable com os departamentos cadastrados. Ate ai tudo certo! Porém quando fiz outro frame(Janela Cadastra Departamento) para adicionar um novo departamento, nao tinha pensado em como atualizar o JTable de outro Frame(Janela Departamento). O que estou procurando fazer é, na hora que clicar em inserir, o JTable da janela Departamento atualizar automaticamente com o novo departamento cadastrado. Isto eu consigo fazer na mesma Janela Frame. Mas como atualizar quando o cadastro e feito em outra Janela? Pois a janela de Departamento fica aberta (Tanto por que se eu fechar a mesma e abrir denovo, os dados sao atualizados sem problemas), mas queria nao precisar fechar a mesma e abrir denovo, e sim atualizar o JTable na hora atraves de um botao de outro Frame.
Existe alguma forma de se fazer isso?
Fiz um metodo para inserir os dados no JTable(Mas usei este apenas quando estava na mesma Janela Frame! o método nao e o problema, pois roda normal)
Segue o codigo do metodo para gerar os dados no JTable:
public void getDados(JTable pTabela)
{
Connection con = (Connection) new GeraConexao().getConexao();
try
{
PreparedStatement stmt = (PreparedStatement) con.prepareStatement("select * from departamento");
ResultSet rs = stmt.executeQuery();
ResultSetMetaData rsmd = (ResultSetMetaData) rs.getMetaData();
int cols = 0;
for(int i = 0; i < rsmd.getColumnCount(); i++)
cols++;
String[] nomeCampo = new String[cols];
for (int i = 0; i < cols; i++)
nomeCampo[i] = rsmd.getColumnName(i+1);
int numeroLinhas = 0;
while(rs.next())
numeroLinhas++;
Object[][] dados = new Object[numeroLinhas][cols];
rs.beforeFirst();
int k = 0;
while(rs.next())
{
for (int i = 0; i < cols; i++)
dados[k][i] = rs.getString(i+1);
k++;
}
DefaultTableModel modelo = new DefaultTableModel(dados, nomeCampo);
pTabela.setModel(modelo);
}
catch(SQLException e){}
}
Como faço para usar este método em Um Frame(mas especifico em um botão), mas para atualizar os dados de um JTable de outra Janela Frame?
Segue o codigo da insercao da outra Janela Cadastra Departamento abaixo:
private void btAdicionaActionPerformed(java.awt.event.ActionEvent evt) {
Departamento departamento = new Departamento();
Connection con = (Connection) new GeraConexao().getConexao();
try
{
PreparedStatement stmt = (PreparedStatement) con.prepareStatement("insert into departamento(dep_nome, dep_desc) values(?, ?)");
departamento.setNome(this.tfNome.getText());
departamento.setDescricao(this.taDescricao.getText());
DepartamentoDAO depDAO = new DepartamentoDAO();
depDAO.adiciona(departamento);
JOptionPane.showMessageDialog(null, "Departamento Adicionado com sucesso!");
new GeraTabela().getDados(parametro JTable) // Foi aqui que percebi a surpresa, pois a JTable que eu queria nao era do mesmo Frame!
}
catch (SQLException ex) {}
}
Se possivel, conto com o auxilio dos amigos.
Grato 