Bonjour a vous,
J'ai trouvé un tutoriel (que j'imagine vs connaissez tous) à l'adresse:
https://code.makery.ch/fr/library/ja...utorial/part2/
C'est un peu compliqué pr mon niveau ms bon... j'aimerai qd meme le faire fonctionner avt de redescendre d'1 cran ds mes aspirat°:
Je vous mets le retour console d'erreur (ou des..?), le code et ensuite... je serai tt disposé a vous remercier pr votre aide.
Code console : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 javafx.fxml.LoadException: /media/sambano/home_HDD_EXTERNE/Documents/java/workspace_eclipse/JavaFX_Test04_Code_Makery_Ch/bin/ch/makery/address/view/PersonOverview.fxml at javafx.fxml@18.0.1/javafx.fxml.FXMLL...XMLLoader.java:2707) at javafx.fxml@18.0.1/javafx.fxml.FXMLL...XMLLoader.java:2677) at javafx.fxml@18.0.1/javafx.fxml.FXMLL...XMLLoader.java:2548) at javafx.fxml@18.0.1/javafx.fxml.FXMLL...XMLLoader.java:2516) at JavaFX_Test04_Code_Makery_Ch/ch.makery.address.MainApp.showPersonOverview(MainApp.java:131) at JavaFX_Test04_Code_Makery_Ch/ch.makery.address.MainApp.start(MainApp.java:85) at javafx.graphics@18.0.1/com.sun.javaf...ncherImpl.java:847) at javafx.graphics@18.0.1/com.sun.javaf...tformImpl.java:484) at javafx.graphics@18.0.1/com.sun.javaf...tformImpl.java:457) at java.base/java.security.AccessController.doPrivileged(AccessController.java:399) at javafx.graphics@18.0.1/com.sun.javaf...tformImpl.java:456) at javafx.graphics@18.0.1/com.sun.glass...ispatcher.java:96) at javafx.graphics@18.0.1/com.sun.glass.ui.gtk.GtkApplication._runLoop(Native Method) at javafx.graphics@18.0.1/com.sun.glass...plication.java:316) at java.base/java.lang.Thread.run(Thread.java:833) Caused by: java.lang.reflect.InvocationTargetException at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at com.sun.javafx.reflect.Trampoline.invoke(MethodUtil.java:77) at jdk.internal.reflect.GeneratedMethodAccessor2.invoke(Unknown Source) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at javafx.base@18.0.1/com.sun.javafx.re...ethodUtil.java:275) at javafx.fxml@18.0.1/com.sun.javafx.fx...hodHelper.java:84) at javafx.fxml@18.0.1/javafx.fxml.FXMLL...XMLLoader.java:2673) ... 13 more Caused by: java.lang.NullPointerException: Cannot invoke "javafx.scene.control.TableColumn.setCellValueFactory(javafx.util.Callback)" because "this.firstNameColumn" is null at JavaFX_Test04_Code_Makery_Ch/ch.makery.address.view.PersonOverviewController.initialize(PersonOverviewController.java:52) ... 24 more
dc là, je pense avoir (peut-etre) 1 erreur L 131 (la L85 est l'appel a la methode ou se trouve la L131)
le code (Ma L131 est en gras):
on peut encore ecrire cette L: AnchorPane personOverview = (AnchorPane) loader.load();
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 public void showPersonOverview() { try { // Load person overview. FXMLLoader loader = new FXMLLoader(); loader.setLocation(MainApp.class.getResource("view/PersonOverview.fxml")); AnchorPane personOverview = loader.load(); // Set person overview into the center of root layout. rootLayout.setCenter(personOverview); // Give the controller access to the main app. PersonOverviewController controller = loader.getController(); controller.setMainApp(this); } catch (IOException e) { e.printStackTrace(); } }
Eclipse ne marque pas d'erreur a ce niveau.
Dc pr ceci, apres recherche
certains disent que le chemin du fichier fxml au-dessus n'est pas bon. Qu'il faut y mettre 1 slah dvt et/ou 1 "../"
J'ai essayé les 2, cele n'a aucun effet.
1 autre explication sur la page:
https://living-sun.com/fr/java/44697...on-javafx.html
Je cite:
dc:Le message d'erreur indique que le type d'un champ de votre classe de contrôleur ne correspond pas au type déclaré dans le fichier fxml. Plus précisément, votre contrôleur déclare un champ de type MainApp appelé mainApp, mais votre fichier fxml tente d’injecter un AnchorPane dans ce domaine.
Ds le fichier du controleur nommé: PersonOverviewController.java
Et ds le fichier fxml nommé: PersonOverview.fxml, il est vrai que je n'ai aucune balise MainApp, juste des balises <AnchorPane>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2private MainApp mainApp;
Que faut il faire?
echanger mon <AnchorPane> par 1 <MainApp> (il me semble que j'ai déjà essayé ms je vais refaire)
J'ai bien evidemment vérifié que j'ai bien un fx:controller déclaré et valide. Ce qui est le cas.
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
La seconde erreur est tt en bas du retour console (en gras également)
dc direct° le fichier: PersonOverviewController.java L52:
et dc j'ai ces 2L (ms je me concentre sur la 1°) qui me renvoient une valeur null
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 private void initialize() { // Initialize the person table with the two columns. //firstNameColumn.setCellValueFactory(cellData -> cellData.getValue().firstNameProperty()); firstNameColumn.setCellValueFactory(cellData -> cellData.getValue().getFirstName()); lastNameColumn.setCellValueFactory(cellData -> cellData.getValue().lastNameProperty()); }
Ds la class Person, il y a 2 constructeurs
- celui par défaut qui initialise avec des attributs null
et 1 constructeur qui initialise les attributs:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 public Person() { this(null, null); }
et ds le fichier MainApp.java, on initialise la ObservableList personData avec des instances de la classe Person avec les 2 paramètres, dc sans valeur null.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 public Person(String firstName, String lastName) { this.firstName = new SimpleStringProperty(firstName); this.lastName = new SimpleStringProperty(lastName); // Some initial dummy data, just for convenient testing. this.street = new SimpleStringProperty("some street"); this.postalCode = new SimpleIntegerProperty(1234); this.city = new SimpleStringProperty("some city"); this.birthday = new SimpleObjectProperty<LocalDate>(LocalDate.of(1999, 2, 21)); }
Dc prquoi j'ai un retour avec valeur null?
J'ai regardé 2 dépots github qui présente leur version et il semblerait que j'ai qque chose de très très resemblant (ms le "très très ressemblant" entraîne l'erreur(s))
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Enfin 1 dernière question eclipse:
comment faire pr avoir un retour console complet?
Voilà, qqu'un pr me dépatouiller du cambouis SVP.
Merci bien a vous
grub
Partager