Boa Tarde a todos.
Tenho uma tela de Cadastro de Clientes, contendo um textField nomeCliente e um botão pesquisar Cliente que Abre outra tela(new Stage), com uma tabela onde pesquiso o Cliente. E ao dar dois cliques na linha da tabela pego o nomeCliente e seto no textField nomeCliente no Stage anterior que ja se encontra aberto(CadastroCliente).
O problema é que não consigo setar o Cliente na tela ja aberta(CadastroCliente), ai estou abrindo uma nova Tela e setando o Cliente.
O que preciso fazer é fechar a tela de pesquisa e setar o valor na tela aberta(CadastroCliente).
Já tentei com ResourceBundle e atraves de metodo mas não consegui.
Vou posta os código de Exemplo do meu problema.
Desde já agradeço a todos.
ClassePrincipal
public class ClassePrincipal extends Application {
@Override
public void start(Stage stage) throws Exception {
Parent paginaPrincipal = FXMLLoader.load(getClass().getResource("/visao/CadastroCliente.fxml"));
Scene scene = new Scene(paginaPrincipal);
stage.setScene(scene);
stage.setResizable(false);
stage.setTitle("Cadastro de Clientes");
stage.show();
}
public static void main(String[] args) {
launch(args);
}
}
CadastroCliente
public class CadastroClienteControle implements Initializable {
ClienteModelo clienteModelo;
Date data = new Date();
SimpleDateFormat data1 = new SimpleDateFormat("dd/MM/yyyy");
private String NomeCliente;
@FXML
private AnchorPane anchorPaneCadastroCliente;
@FXML
private TextField txtData;
@FXML
private TextField txtCliente;
@FXML
private Button btnPesquisar;
@FXML
void btnPesquisarAction(ActionEvent event) throws IOException {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/visao/PesquisarCliente.fxml"));
AnchorPane root = fxmlLoader.load();
Scene scene = new Scene(root);
Stage stage = new Stage();
stage.setTitle("Pesquisar Cliente");
stage.setScene(scene);
stage.setResizable(false);
stage.initModality(Modality.APPLICATION_MODAL);
stage.show();
}
public void setCliente(ClienteModelo clienteModelo) {
this.clienteModelo = clienteModelo;
txtCliente.setText(clienteModelo.getCliente());
}
@Override
public void initialize(URL url, ResourceBundle rb) {
//this.NomeCliente = rb.getString("NomeCliente");
//System.out.println(rb.getString("NomeCliente"));
txtData.setText(data1.format(data));
}
}
PesquisarCliente
public class PesquisarClienteControle implements Initializable {
ClienteModelo clienteModelo;
ClienteDao clienteDao;
String uso = "Junior";
@FXML
private AnchorPane anchorPanePesquisarCliente;
@FXML
private TextField txtPesquisarCliente;
@FXML
private TableView<ClienteModelo> tblCliente;
@FXML
private TableColumn<ClienteModelo, String> clmCliente;
private ObservableList<ClienteModelo> observableListaDeCliente = FXCollections.observableArrayList();
@FXML
void tblClienteAction(MouseEvent event) throws IOException {
if (event.getClickCount() == 2) {
getCliente();
final Stage stage = new Stage();
ResourceBundle rb = new ResourceBundle() {
@Override
protected Object handleGetObject(String key) {
if (key.contains("NomeCliente")) {
return clienteModelo.getCliente();
} else {
return null;
}
}
@Override
public Enumeration<String> getKeys() {
return null;
}
};
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("/visao/CadastroCliente.fxml"), rb);
Parent parent = (Parent) fxmlLoader.load();
CadastroClienteControle cadastroClienteControle = fxmlLoader.getController();
Scene scene = new Scene(parent);
stage.setScene(scene);
stage.show();
cadastroClienteControle.setCliente(clienteModelo);
}
}
private ObservableList<ClienteModelo> carregarTabelaCliente() {
try {
clienteDao = new ClienteDao();
} catch (SQLException ex) {
Logger.getLogger(PesquisarClienteControle.class.getName()).log(Level.SEVERE, null, ex);
}
observableListaDeCliente = FXCollections.observableArrayList(clienteDao.listarCliente());
return observableListaDeCliente;
}
private void getCliente() {
clienteModelo = tblCliente.getSelectionModel().getSelectedItem();
}
@Override
public void initialize(URL url, ResourceBundle rb) {
clmCliente.setCellValueFactory(new PropertyValueFactory<ClienteModelo, String>("Cliente"));
tblCliente.setItems(carregarTabelaCliente());
}
}
ClienteModelo
public class ClienteModelo {
private String Data;
private String Cliente;
public ClienteModelo() {
}
public ClienteModelo(String Data, String Cliente) {
this.Data = Data;
this.Cliente = Cliente;
}
public String getData() {
return Data;
}
public void setData(String Data) {
this.Data = Data;
}
public String getCliente() {
return Cliente;
}
public void setCliente(String Cliente) {
this.Cliente = Cliente;
}
}
ClienteDao
public class ClienteDao {
private final Connection connection;
private Statement st = null;
public ResultSet rs = null;
public ClienteDao() throws SQLException {
this.connection = new ConnectionFactory().getConnection();
}
public List<ClienteModelo> listarCliente() {
String sql = "select * from CadastroCliente order by nomeCliente";
List<ClienteModelo> cliente = new ArrayList<>();
try {
PreparedStatement ps = connection.prepareStatement(sql);
rs = ps.executeQuery();
while (rs.next()) {
ClienteModelo clienteModelo = new ClienteModelo();
clienteModelo.setCliente(rs.getString("nomeCliente"));
cliente.add(clienteModelo);
}
} catch (SQLException ex) {
//Logger.getLogger(ClienteDao.class.getName()).log(Level.SEVERE, null, ex);
//JOptionPane.showMessageDialog(null, "Erro ao Adicionar");
}
return cliente;
}
}