Pessoal eu estou usando JavaFx, estou com problemas no botão de atualizar, vou explicar o porquê, bom eu fiz duas telas, em uma o usuário pode digitar e salvar na tabela e tabela, quando ele crica em alterar chama uma outra tela…
Nesta tela atualiza normal (atualiza no banco de dados), mais a tabela não atualiza até que eu inicie o sistema novamente…
Código da primeira tela:
public class FXML_LoginController implements Initializable {
@FXML private TextField txtNome;
@FXML private TextField txtSobrenome;
@FXML private Button btnSalvar_Clientes;
@FXML private TableView tbClientes;
@FXML private TableColumn<Clientes, Integer> tclId_Clientes;
@FXML private TableColumn<Clientes, String> tclNome_Clientes;
@FXML private TableColumn<Clientes, String> tclSobrenome_Clientes;
@FXML private Button btnAlterar_Clientes;
@FXML private Button btnDeletar_Clientes;
public Clientes selecionado;
@FXML
public void navegandoTela(ActionEvent event) {
if(selecionado != null){
Alterar_Clientes ac = new Alterar_Clientes(selecionado);
try {
ac.start(new Stage());
} catch (Exception ex) {
Logger.getLogger(FXML_LoginController.class.getName()).log(Level.SEVERE, null, ex);
}
}else{
Alert a = new Alert(Alert.AlertType.ERROR);
a.setHeaderText("SELECIONE O USUÁRIO QUE DESEJA ALTERAR!");
a.show();
}
}
@FXML
public void salvar_Cliente(ActionEvent event) {
Clientes cli = new Clientes();
ClientesDAO cDAO = new ClientesDAO();
cli.setNome(txtNome.getText());
cli.setSobrenome(txtSobrenome.getText());
try {
cDAO.salvar_Cliente(cli);
JOptionPane.showMessageDialog(null, "SALVO NO BANCO DE DADOS");
colocandoTable();
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, ex);
}
}
@FXML
public void colocandoTable(){
tclId_Clientes.setCellValueFactory(new PropertyValueFactory("id_cliente"));
tclNome_Clientes.setCellValueFactory(new PropertyValueFactory("nome"));
tclSobrenome_Clientes.setCellValueFactory(new PropertyValueFactory("sobrenome"));
try {
tbClientes.setItems(atualizar_tabela());
} catch (SQLException ex) {
Logger.getLogger(FXML_LoginController.class.getName()).log(Level.SEVERE, null, ex);
}
}
@FXML
public ObservableList<Clientes> atualizar_tabela() throws SQLException{
ClientesDAO cd = new ClientesDAO();
return FXCollections.observableArrayList(cd.pesquisarClientes());
}
@Override
public void initialize(URL url, ResourceBundle rb) {
colocandoTable();
tbClientes.getSelectionModel().selectedItemProperty().addListener(new ChangeListener(){
@Override
public void changed(ObservableValue observable, Object oldValue, Object newValue) {
selecionado = (Clientes) newValue;
}
});
}
}
Código da segunda tela:
public class FXML_Alterar_ClientesController implements Initializable {
@FXML private Button btnAtualizar_Clientes;
@FXML private TextField txtNome;
@FXML private TextField txtSobrenome;
@FXML private Label labelID;
public static Clientes c;
/**
- Initializes the controller class.
*/
public void initClientes(){
labelID.setText(Integer.toString(c.getId_cliente()));
txtNome.setText(c.getNome());
txtSobrenome.setText(c.getSobrenome());
}
@Override
public void initialize(URL url, ResourceBundle rb) {
initClientes();
}
public static Clientes getC() {
return c;
}
public static void setC(Clientes c) {
FXML_Alterar_ClientesController.c = c;
}
@FXML
public void atualizar_Cliente(ActionEvent event) {
Clientes cli = new Clientes();
ClientesDAO cDAO = new ClientesDAO();
cli.setNome(txtNome.getText());
cli.setSobrenome(txtSobrenome.getText());
cli.setId_cliente(Integer.parseInt(labelID.getText()));
try {
cDAO.atualizar_Cliente(cli);
} catch (Exception ex) {
JOptionPane.showMessageDialog(null, "ERRO AO ATUALIZAR!"+ex);
}
JOptionPane.showMessageDialog(null, "ATUALIZADO COM SUCESSO!");
}
}
Sei que o problema é que não tem como eu chamar o método da tabela para atualizar por estou em uma classe diferente, alguém pode me ajudar por gentileza???