code fonctionnel avec System.out.println, ne fonctionne pas sans
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
Code:
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();
}
} |
L39, 121 et 122
Bon we a vs.
grub