Bonjour,
Je développe une petite application de gestion pour m’entraîner mais j'ai un petit soucis (indiqué dans le titre). Donc j'ai mon fichier fxml crée via Scene Builder qui est normalement correct :
J'ai donc une tableview avec mes 5 colonnes et un label en dessous qui va indiqué le nombres de données enregistrées dans la BDD (nombre de lignes).
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
20
21
22 <?xml version="1.0" encoding="UTF-8"?> <?import javafx.scene.control.Label?> <?import javafx.scene.control.TableColumn?> <?import javafx.scene.control.TableView?> <?import javafx.scene.layout.AnchorPane?> <AnchorPane maxHeight="-Infinity" maxWidth="-Infinity" minHeight="-Infinity" minWidth="-Infinity" prefHeight="539.0" prefWidth="741.0" xmlns="http://javafx.com/javafx/10.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="ControllerListeView"> <children> <TableView fx:id="tableprod" layoutX="19.0" layoutY="16.0" prefHeight="464.0" prefWidth="702.0"> <columns> <TableColumn prefWidth="113.60003662109375" text="Titre" /> <TableColumn prefWidth="150.39996337890625" text="Interprète / Réalisateur" /> <TableColumn prefWidth="150.39996337890625" text="Type" /> <TableColumn prefWidth="150.39996337890625" text="Année de production" /> <TableColumn prefWidth="150.39996337890625" text="Note ( /5)" /> </columns> </TableView> <Label fx:id="compteprod" layoutX="19.0" layoutY="488.0" prefHeight="41.0" prefWidth="702.0" /> </children> </AnchorPane>
Et voici mon Controller :
A l'exécution, les données ne sont pas dans la table, ma tableview reste vide. Mais par contre, les données sont bien présentes comme le label peut l'indiquer :
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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118 import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.scene.control.Label; import javafx.scene.control.TableView; /* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ /** * * @author Thibault Dereumaux */ public class ControllerListeView { @FXML private TableView tableprod; @FXML private Label compteprod; private ObservableList<ObservableList> data; Statement stmtListe; Connexion maConnexion = new Connexion(); public interface Production { // INTERFACE public int nombre(); } public class Musique implements Production {// IMPLEMENTATION DE L'INTERFACE @Override public int nombre() { int nbMusique = 0; try { String requeteRecherche = "select * from productions where type = 'Musique'"; stmtListe = (Statement) maConnexion.ObtenirConnection().createStatement(); ResultSet rs = stmtListe.executeQuery(requeteRecherche); rs.last(); nbMusique = rs.getRow(); rs.beforeFirst(); } catch(SQLException ex) { System.err.println(ex); } return nbMusique; } } public class Film implements Production {// IMPLEMENTATION DE L'INTERFACE @Override public int nombre() { int nbFilm = 0; try { String requeteRecherche = "select * from productions where type = 'Film'"; stmtListe = (Statement) maConnexion.ObtenirConnection().createStatement(); ResultSet rs = stmtListe.executeQuery(requeteRecherche); rs.last(); nbFilm = rs.getRow(); rs.beforeFirst(); } catch(SQLException ex) { System.err.println(ex); } return nbFilm; } } @FXML public void initialize() { data = FXCollections.observableArrayList(); try{ String requeteListeMusiques = "select *from productions"; stmtListe = (Statement) maConnexion.ObtenirConnection().createStatement(); ResultSet rs = stmtListe.executeQuery(requeteListeMusiques); while(rs.next()){ ObservableList<String> row = FXCollections.observableArrayList(); for(int i=1 ; i<=rs.getMetaData().getColumnCount(); i++){ row.add(rs.getString(i)); } data.add(row); } tableprod.setItems(data); } catch(SQLException e){ System.out.println(e); } Production musique = new Musique(); Production film = new Film(); int nbMusique = musique.nombre(); int nbFilm = film.nombre(); int nbProduction = nbMusique + nbFilm; String texte = ""+nbProduction+" "; if(nbProduction == 0 || nbProduction == 1) texte += "production enregistrée "; else texte += "productions enregistrées "; if (nbMusique > 0) texte += "dont "; if(nbMusique == 1) texte += ""+nbMusique+" musique "; if(nbMusique > 1) texte += ""+nbMusique+" musiques "; if(nbMusique > 0 && nbFilm > 0) texte += "et "; if (nbMusique == 0 && nbProduction > 0) texte += "dont "; if(nbFilm == 1) texte += ""+nbFilm+" film "; if(nbFilm > 1) texte += ""+nbFilm+" films "; compteprod.setText(texte); } }
Comment puis-je faire en sorte que mes données s'affichent dans ma tableview ? :/
Je tiens à préciser que je ne connais pas très bien javaFX, l'application était à la base en swing, que je dois convertir en javaFX.
Ma BDD est correcte, c'est sur et certain, c'est un soucis de code ...
Merci de votre aide








Répondre avec citation



quand une réponse a été apportée à votre question. Aucune réponse ne sera donnée à des messages privés portant sur des questions d'ordre technique. Les forums sont là pour que vous y postiez publiquement vos problèmes.
suivez 
Partager