Bjour,
Je suis en discussion avec bouye sur le forum interface graphique JavaFX.
Il m'a donné 1 code que j'ai un peu modifié et que j'arrive a faire tourner.
Le truc c'est que le programme tourne correctement uniquement si je ne commente pas
1 instruction System.out.println()
grosso modo,
il y' a 1 Service avec 1 Task qui interroge 1 DB.
le retour est affiché ds 1 TableView
Si je commente le System.out.println, le programme tourne mais
j'ai le msg "aucun contenu ds la table"
Si je décommente l'instruct°, le programme tourne avec la TableView
remplie correctement ms sans retour console
J'ai sans doute fait 1 erreur qque part, peut etre a la creat° du projet ms j'ai
qd meme l'orgueil de trouver ça bizarre.
Je vous poste le code,
Si certains d'entre vous veulent essayer, histoire de voir
- si j'ai foiré qque chose
- si c'est mon install d'eclipse qui a foiré qque chose
- si y'a 1 bug
Je mets tt le code avec les imports
L39, 121 et 122
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
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147 package application; import javafx.beans.property.SimpleStringProperty; import javafx.collections.FXCollections; import javafx.collections.ObservableArray; import javafx.collections.ObservableList; import javafx.concurrent.Service; import javafx.concurrent.Task; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Button; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import java.net.URL; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.ResourceBundle; import java.util.logging.Level; import java.util.logging.Logger; public final class TableScreenController implements Initializable { @FXML private TableView<Result> tableView; @FXML private TableColumn<Result, String> bookColumn; @FXML private TableColumn<Result, String> borrowerColumn; @FXML private Button queryButton; private final ObservableList<Result> queryResult = FXCollections.observableArrayList(); private final ObservableList<Result> queryResult__ = FXCollections.observableArrayList(); @Override public void initialize(URL url, ResourceBundle resourceBundle) { tableView.setItems(queryResult); bookColumn.setCellValueFactory(feature -> new SimpleStringProperty(feature.getValue().book())); borrowerColumn.setCellValueFactory(feature -> new SimpleStringProperty(feature.getValue().borrower())); } private Service<Result[]> queryService; @FXML private void doQueryAsync() { Optional.ofNullable(queryService) .ifPresent(Service::cancel); queryService = null; queryResult.clear(); queryButton.setDisable(true); final var service = new Service<Result[]>() { @Override protected Task<Result[]> createTask() { return new Task<Result[]>() { @Override protected Result[] call() throws Exception { // FAIRE LA REQUETE ICI. String selectQueryTest03_; Connection conTest03_; PreparedStatement p_stmtTest03_; ResultSet rsTest03_ = null; ObservableList<String> obListPrenom = FXCollections.observableArrayList(); ObservableList<String> obListTitre = FXCollections.observableArrayList(); int nbre_ergts = 0; // redact° de la requete selectQueryTest03_ = "SELECT client.prenom, livre.titre\n" + "FROM client, livre\n" + "INNER JOIN emprunt\n" + "WHERE client.id_abonne = emprunt.id_abonne\n" + "AND emprunt.id_livre = livre.id_livre"; conTest03_ = DB.getCon(); try { p_stmtTest03_ = conTest03_.prepareStatement(selectQueryTest03_); rsTest03_ = p_stmtTest03_.executeQuery(); while (rsTest03_.next()) { obListPrenom.add(rsTest03_.getString("prenom")); obListTitre.add(rsTest03_.getString("titre")); nbre_ergts++; } } catch(SQLException except) { // System.out.println("Except°:"); System.out.println("Fichier: F03_emprunt_controller.java"); System.out.println("Methode: test02_()"); Logger.getLogger(Main.class.getName()).log(Level.SEVERE, null, except); } // LE SLEEP EST JUSTE POUR SIMULER UNE TACHE DE LONGUE DUREE. Thread.sleep(2000); // fonctionne Result result02X = null; for (int i = 0; i < nbre_ergts; i++) { result02X = new Result(obListTitre.get(i), obListPrenom.get(i)); queryResult.addAll(result02X); } //System.out.println("--" + queryResult__.get(1)); System.out.println("--" + queryResult__.size()); return new Result[] { }; } }; } }; service.setOnSucceeded(e -> { final var results = (Result[])e.getSource().getValue(); queryResult.setAll(results); queryButton.setDisable(false); }); service.setOnCancelled(e -> { queryButton.setDisable(false); }); service.setOnFailed(e -> { queryButton.setDisable(false); }); queryService = service; queryService.start(); } }
Bon we a vs.
grub
Partager