IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaFX Discussion :

Problème pour alimenté une TableView


Sujet :

JavaFX

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 181
    Par défaut Problème pour alimenté une TableView
    Bonsoir,
    Je suis entrain de travailler sur un petit TP, qui consiste a récupérer une requete écrite dans un textArea et, par la suite afficher le résultat dans une table.
    Le nombre de colonnes de ma table sera donc variable selon la table.Je n'arrive pas à afficher les colonnes...
    J'ai utilisé scenebuilder pour crèer l'interface graphique voila mon code:
    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
    package application;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.Statement;
     
    import javafx.event.ActionEvent;
    import javafx.fxml.FXML;
    import javafx.scene.control.Button;
    import javafx.scene.control.Label;
    import javafx.scene.control.TableColumn;
    import javafx.scene.control.TableView;
    import javafx.scene.control.TextArea;
     
    public class Modele {
     
    	@FXML
    	private Button button;
     
    	@FXML
    	private TextArea textAria;
     
    	@FXML
    	private TableView<?> jtable;
     
    	@FXML
    	private Label label;
     
    	@FXML
    	public void Selection(ActionEvent e) {
     
    		try {
    			String query;
    			query = textAria.getText().toString();
    			String url = "jdbc:postgresql://localhost:5432/Ecole";
    			String user = "postgres";
    			String mdp = "badr2009";
    			Connection conn = DriverManager.getConnection(url, user, mdp);
     
    			Statement state = conn.createStatement();
    			ResultSet result = state.executeQuery(query);
    			ResultSetMetaData resultmeta = result.getMetaData();
    			String column;
    			TableColumn table = new TableColumn();
     
    			for (int i = 1; i < resultmeta.getColumnCount(); i++) {
     
    				table.setText(resultmeta.getColumnName(i).toString());
    				jtable.getColumns().add(table);
    			}
     
    		} catch (Exception e2) {
    			// TODO: handle exception
    		}
     
    	}
     
    }
    Merci d'avance

  2. #2
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Et tu as verifie (via le débogueur ou des impressions) que ta requête retourne quelques chose et que tu as bien plusieurs colonnes ? Également tu interceptes une exception sans rien en faire, tu as vérifié qu'elle n'est pas levée ????

    Ensuite je me permet rappeler que l'initialisation une connexion et une requête sur une base se sont des opérations coûteuses en temps et bloquantes (et qu'en plus elles peuvent potentiellement planter) et qu'il serait peut-être bienvenu de les effectuer dans une tache de fond. Mais bon ce n'est pas le cœur du soucis ici, chaque chose en son temps.
    Merci de penser au tag 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 mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 181
    Par défaut
    Bonjour ,
    oui j'ai bien vérifier ma requête retourne bien les lignes sur la console cependant j'ai pas compris ta deuxième question concernant l'exception

  4. #4
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Tu fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    try {
     [...]
    		} catch (Exception e2) {
    			// TODO: handle exception
    		}
    As-tu vérifier que e2 ne survient jamais ?
    Merci de penser au tag 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 mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2011
    Messages
    181
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Maroc

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2011
    Messages : 181
    Par défaut
    Bonjour,
    Désolé pour le retard, j'étais préoccuper par un concours d'accès pour un master que j'ai passé hier.
    Bon j'ai cherché encore plus sur internet et je suis tomber sur un bout de code qui a résolu mon problème,sauf que j'ai pas vraiment compris le code.
    On cherchant la documentation j'ai compris qu'on récupère une valeur de l'objet javafx et qu'il est stocké dans le param.getvalue et celle-ci change automatiquement c'est bien cela? si tu peux m’éclaircir encore plus s'il te plait ?
    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
     
    package application;
     
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.ResultSetMetaData;
    import java.sql.Statement;
     
    import javafx.beans.property.SimpleStringProperty;
    import javafx.beans.value.ObservableValue;
    import javafx.collections.ObservableList;
    import javafx.event.ActionEvent;
    import javafx.fxml.FXML;
    import javafx.scene.control.Button;
    import javafx.scene.control.Label;
    import javafx.scene.control.TableColumn;
    import javafx.scene.control.TableColumn.CellDataFeatures;
    import javafx.scene.control.TableView;
    import javafx.scene.control.TextArea;
    import javafx.util.Callback;
     
    public class Modele {
     
    	@FXML
    	private Button button;
     
    	@FXML
    	private TextArea textAria;
     
    	@FXML
    	private TableView<?> jtable;
     
    	@FXML
    	private Label label;
     
    	@FXML
    	public void Selection(ActionEvent e) {
     
    		try {
    			String query;
    			query = textAria.getText().toString();
    			String url = "jdbc:postgresql://localhost:5432/Ecole";
    			String user = "postgres";
    			String mdp = "postgres";
    			Connection conn = DriverManager.getConnection(url, user, mdp);
     
    			Statement state = conn.createStatement();
    			ResultSet result = state.executeQuery(query);
    			ResultSetMetaData resultmeta = result.getMetaData();
    			String column;
     
    			for (int i = 0; i < resultmeta.getColumnCount(); i++) {
    				// We are using non property style for making dynamic table
    				final int j = i;
    				TableColumn col = new TableColumn(resultmeta.getColumnName(i + 1));
    				col.setCellValueFactory(
    						new Callback<CellDataFeatures<ObservableList, String>, ObservableValue<String>>() {
     
    							public ObservableValue<String> Call1(CellDataFeatures<ObservableList, String> param) {
    								return new SimpleStringProperty(param.getValue().get(j).toString());
    							}
     
    							public ObservableValue<String> call1(CellDataFeatures<ObservableList, String> param) {
    								// TODO Auto-generated method stub
    								return null;
    							}
     
    							@Override
    							public ObservableValue<String> call(CellDataFeatures<ObservableList, String> param) {
    								// TODO Auto-generated method stub
    								return null;
    							}
    						});
     
    				jtable.getColumns().addAll(col);
    				jtable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY);
     
    			}
    		} catch (Exception e2) {
    			// TODO: handle exception
    		}
     
    	}
     
    }

  6. #6
    Rédacteur/Modérateur

    Avatar de bouye
    Homme Profil pro
    Information Technologies Specialist (Scientific Computing)
    Inscrit en
    Août 2005
    Messages
    6 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Information Technologies Specialist (Scientific Computing)
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Août 2005
    Messages : 6 904
    Billets dans le blog
    54
    Par défaut
    Hum c'est surtout pas du tout le même soucis :

    Citation Envoyé par dibax10
    Je n'arrive pas à afficher les colonnes...
    Ca sous-entend que la table s'affiche mais sans aucune colonne.

    Or le code que tu as posté se contente juste de mettre un value factory sur les colonnes pour extraire le contenu des valeurs retournées par la requete sur la table. Donc en fait ton problème initial a toi c’était que le contenu des colonnes ne s'affichait pas ?

    Merci de lire l'article suivant : Tutoriel sur l'API Cell de JavaFX, V-C. TableView<V>
    Merci de penser au tag 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 mon blog sur Développez.

    Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to produce bigger and better idiots. So far, the universe is winning. ~ Rich Cook

Discussions similaires

  1. Problème pour alimenter une comboBox en fonction d'une autre
    Par Onii71130 dans le forum Windows Forms
    Réponses: 1
    Dernier message: 26/06/2019, 15h26
  2. Problème pour alimenter une datagrid
    Par cladchildren dans le forum VB.NET
    Réponses: 2
    Dernier message: 15/12/2011, 11h59
  3. Réponses: 1
    Dernier message: 01/10/2008, 21h34
  4. problème pour alimenter une liste
    Par mawelle dans le forum IHM
    Réponses: 2
    Dernier message: 31/03/2008, 11h30
  5. [VB.NET] Problème pour alimenter une listbox.
    Par gueguen23 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 17/01/2005, 14h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo