Utilisation du Pattern Observer en JavaFx (methode Start)
Fermé
Jerony_2338
Messages postés6Date d'inscriptionsamedi 18 mai 2019StatutMembreDernière intervention18 octobre 2019
-
Modifié le 18 oct. 2019 à 16:17
Bonjour voilà je suis sur un mini projet en JavaFx . Je suis confronté à un problème sur lequel je ne trouves pas de solution "probant". Cela concerne l'utilisation du Pattern Observer, j'ai réussi à l'appliquer sur toute mes autres vues sauf sur la vue de démarrage (main + méthode start de la classe Application) . Ayant énormément de classe je me focaliserai que sur les 2 plus importante a savoir la vue principal et le contrôleurs :
Pour éviter d'avantage de confusion je ciblerais que la méthode effectuant l'insertion :
PersonControlleur.java
@FXML void Insertion (ActionEvent event) {
try {
Person personne = new Perso(nom.getText(), prenom.getText(), age.getText());
/* Insertion dans de la Person dans la BD (La couche service contient tout mes objets DAO
et mes methode du Pattern Observer*/
String nom = service.getPersonneDAO().insert(personne);
// Notification d'un changement
service.notifyPersonneObservers(personne);
// Si tout test OK on ferme la fenêtre
Stage stage = (Stage) btAjout.getScene().getWindow();
stage.close();
} catch (Exception e) {
e.printStackTrace();
}
}
Voici ma vu principal :
import model.Person;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.control.cell.TextFieldTableCell;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.VBox;
import javafx.stage.Stage;
import javafx.util.converter.DoubleStringConverter;
import javafx.util.converter.IntegerStringConverter;
public class mainApp extends Application implements Observer {
public static void main(String[] args) {
launch(args);
}
// Avoir accès à mon Objet DAO
private IPersonnelDAO personneDAO;
// construire ma couche service pour l'application du Pattern Observer
private Service service;
private TableColumn<Person, String> tbNom;
private TableColumn<Person, Sting> tbPrenom;
private TableColumn<Person, Integer> tbAge;
private Button btInsertion;
private ObservableList<Person> loPersonne;
private TableView<Person> tbPersonne;
// Conteneur principal de la vue principale
private BorderPane borderPane;
@Override public void start(Stage primaryStage) {
borderPane = new BorderPane();
//Initialisation de l'objet Service
service = new Service();
personneDAO = service.getPersonneDAO();
// S'enregistre sur la couche Service pour écouter l'ajout ou suppression d'un Personnel
service.addObjectObserver(this);
/*Affiche la vue pour l'insertion du personnel et fait appel au contrôleur et la méthode d'insertion (
La méthode étant assez longue je ne la rajouterais pas mais elle se trouve dans ma classe
principal)*/
btInsertion= new Button("Ajout du Personnel");
btInsertion.setPrefWidth(200);
btInsertion.setOnAction(a -> {
actionAjoutPersonne(primaryStage);
});
//Construction de la Table , colonne ...
tbPersonne = new TableView<>();
tbNom = new TableColumn<>("Nom");
tbPrenom= new TableColumn<>("Prenom");
tbAge = new TableColumn<>("Age");
borderPane.setCenter(tbPersonne);
// Ajout des 2 bouton
//Pane pour les boutons
TilePane lstBoutons = new TilePane();
lstBoutons.getChildren().add(btInsertion);
lstBoutons.setPadding(new Insets(0,10,0,10));
borderPane.setRight(lstBoutons);
Scene scene = new Scene(borderPane, 1100, 700);
scene.getStylesheets().add("/vues/css/vues.css");
primaryStage.setTitle("Personne");
primaryStage.setScene(scene);
initiliseDonnees();
primaryStage.show();
}
}
private void initiliseDonnees() {
// Affiche la Liste des Personnes dans la BD
List<Person> list= personneDAO.getListe("");
loPersonne = FXCollections.observableArrayList(list);
tbNom.setCellValueFactory(new PropertyValueFactory<Person, String>("nom"));
tbPrenom.setCellValueFactory(new PropertyValueFactory<Person, String>("prenom"));
tbAge.setCellValueFactory(new PropertyValueFactory<Person,Integer>("age"));
tbPersonne.getColumns().addAll(tbNom,tbPrenom,tbAge);
tbPersonne.setItems(loPersonne);
}
@Override public void update(Observable arg0, Object arg1) {
initiliseDonnees();
}
Merci d'avance pour vos remarques ! .
A voir également:
Utilisation du Pattern Observer en JavaFx (methode Start)