Atualizar Java

5 respostas
java
P

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

5 Respostas

J

Sim, é possivel estando em uma Classe diferente chamar metodo de outra Classe.
Um exemplo mais simples do programa rodando e mostrando o erro de forma isolada ajuda na solução…
Não há necessidade de usar JOptionPane do Swing, JavaFX tem essa mesma funcionalidade.

P

Como eu chamo o método de outra classe?

J

Ela estando instanciada ou chamando um metodo estatico.

P

Problema que já fiz isso mas mesmo assim nao atualiza na tabela, agora pouco também tentei deixar as variáveis públicas mais também não deu certo

J

É uma pena, mas pra mim ver, nesse caso preciso de um exemplo (programa) com o erro isolado.
Porque falando assim é mesmo dificil acertar, pode até ser que por tentativa de erro e acerto resolva seu problema, mas é trabalhoso.
Sinto muito e desejo boa sorte e que você consiga resolver o problema, quem sabe algum colega aqui do forum lance luz na sua questão.

Criado 7 de março de 2020
Ultima resposta 8 de mar. de 2020
Respostas 5
Participantes 2