Problemas ao atualizar JavaFx!

0 respostas
java
T

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());

}

<a class="mention" href="/u/override">@Override</a>

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???

Criado 7 de março de 2020
Respostas 0
Participantes 1