Galera, tenho 2 FXML, o primeiro com a TableView sendo carregada por um ObservableList:
ObservableList<recebimentoDivergencia> divergencia = FXCollections.observableArrayList(rcdDAO.obterTabelaCriterio(txtFiltro1.getSelectionModel().getSelectedItem(), txtCriterio1.getText(), txtFiltro2.getSelectionModel().getSelectedItem(), txtCriterio2.getText()));
tblViewDivergencia.setItems(divergencia);
Esse “rcdDAO.obterTabelaCriterio(******” está na minha classe DAO:
public ObservableList<recebimentoDivergencia> obterTabelaCriterio(String Filtro1, String criterio1, String Filtro2, String criterio2) {
ObservableList<recebimentoDivergencia> lista = FXCollections.observableArrayList();
Connection conn = Conexao.getConnection();
Statement stmt = null;
ResultSet rs = null;
String sql = "SELECT * FROM recebdivergencia "
+ " WHERE " + Filtro1 + " LIKE '%" + criterio1 + "%' "
+ " AND " + Filtro2 + " LIKE '%" + criterio2 + "%' "
+ " ORDER BY cod DESC LIMIT 5000";
try {
stmt = conn.createStatement();
rs = stmt.executeQuery(sql);
while (rs.next()) {
recebimentoDivergencia bean = new recebimentoDivergencia();
bean.setCod(rs.getInt("cod"));
bean.setDataRecebimento(rs.getString("dataRecebimento"));
bean.setNf(rs.getString("nf"));
bean.setFornecedor(rs.getString("fornecedor"));
bean.setTransportadora(rs.getString("transportadora"));
bean.setPlaca(rs.getString("placa"));
bean.setMaterial(rs.getString("material"));
bean.setDescricao(rs.getString("descricao"));
bean.setQtdeNF(rs.getInt("qtdeNF"));
bean.setQtdeFisica(rs.getInt("qtdeFisica"));
bean.setDiferenca(rs.getInt("diferenca"));
bean.setTipo(rs.getString("tipo"));
bean.setImg1Bloob(rs.getBlob("Foto1"));
if (bean.getImg1Bloob() != null) {
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bean.getImg1Bloob().getBytes(1, (int) bean.getImg1Bloob().length()));
bean.setImg1Foto(new Image(byteArrayInputStream));
} else {
bean.setImg1Foto(new Image("/br/com/pcp/img/foto-icon.png"));
}
bean.setImg2Bloob(rs.getBlob("Foto2"));
if (bean.getImg2Bloob() != null) {
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bean.getImg2Bloob().getBytes(1, (int) bean.getImg2Bloob().length()));
bean.setImg2Foto(new Image(byteArrayInputStream));
} else {
bean.setImg2Foto(new Image("/br/com/pcp/img/foto-icon.png"));
}
bean.setConferente(rs.getString("conferente"));
bean.setObsOperacao(rs.getString("obsOperacao"));
bean.setLote(rs.getString("lote"));
bean.setStatusOperacao(rs.getString("statusOperacao"));
bean.setCustoUnitario(rs.getDouble("custoUnitario"));
bean.setCustoTotal(rs.getDouble("custoTotal"));
bean.setStatusMWM(rs.getString("statusMWM"));
bean.setObsMWM(rs.getString("obsMWM"));
bean.setFollowup(rs.getString("followup"));
bean.setDataSolucao(rs.getString("dataSolucao"));
bean.setNotaDebito(rs.getInt("notaDebito"));
bean.setBloqueioSAP(rs.getString("bloqueioSAP"));
lista.add(bean);
}
} catch (Exception e) {
e.printStackTrace();
Conexao.close((com.mysql.jdbc.Connection) conn, stmt, rs);
} finally {
Conexao.close((com.mysql.jdbc.Connection) conn, stmt, rs);
}
return lista;
}
E o 2º é um fxml separado onde abro tipo um pop-up para alteração dos dados (Insert ou Update).
Até aqui tudo OK e funcionando perfeitamente.
O problema é que ao dar 2 cliques numa linha da TableView eu abro o 2º fxml preencho os campos e faço o Update, ao finalizar o update esse 2º fxml fecha e a tela que tem TableView volta em primeiro plano mas a TableView não se atualiza automaticamente com os dados que acabei de alterar, sou obrigado a clicar no botão para atualizar, como faço para que a TableView atualize automaticamente quando eu fechar a 2º fxml dos campos?