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

Composants Java Discussion :

Metadonnées sur row


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut Metadonnées sur row
    Bonjour a tous,

    J'ai une JTable avec des columns et des rows.
    J'ai mis un PopupMenu sur cette table pour ouvrir un menu contextuel lors d'un clique droit sur une row.

    Maintenant j'aurais besoin de récupérer mon object metier correspondant à la row selectionné.

    Je ne sais pas comment faire, j'ai essayé plusieur solution mais rien ne fonctionne jusqu'à présent.

    Auriez-vous une idée pour mon problème ?

    Merci d'avance et bonne journée

  2. #2
    Membre émérite
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Par défaut
    Est-ce que tu peut détailler un peu ?
    tu utilise un DefaultTableModel pour ta JTable ?
    par objet metier, tu insinue une ligne de ta JTable qui corresponderai à une ligne dans une Table dans une Base de données ?

  3. #3
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut
    Ok, désolé du manque de détail.

    Oui j'ai une classe model qui étend DefaultTableModel dans laquel je peuple ma JTable.

    Par objet metier, oui j'insinue ca (a part que ce n'est pas dans une base mais dans un fichier XML)


    Enfait ma table affiche une liste de films, j'ai donc une classe Film avec un id, un nom, .... Des getters et des setters.

    Dans ma table je n'affiche pas les id, mais c'est avec ca que je lie mon object java a celui de mon fichier XML.

    Je voudrais donc, lors d'un clique droit, ouvrir une fenetre de propriété et lister les attributs de mon film(XML)

    Est-ce plus claire?

  4. #4
    Membre émérite
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Par défaut
    Utilise getDataVector() de la classe DefaultTableModel et getSelectedRow() de ta JTable. Ca donnerai a peu prés ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Vector ma_ligne = ((Vector)model.getDataVector().elementAt(table.getSelectedRow())
    Et pour acceder au attributs de cette ligne, tu utilise elementAt() comme suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Film film = new Film()
    film.setNom(ma_ligne.elementAt(1).toString())
    Mais le problème c'est que tu m'as dis que tu n'affiche pas id dans la JTable. C'est à toi d'y trouver une solution (la plus facile serait d'afficher carrément id dans la JTable)

  5. #5
    Membre averti
    Inscrit en
    Septembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 48
    Par défaut
    Ok je vois,

    Le problème c'est que je ne veux pas l'afficher,
    est-il possible de le mettre et de masquer la colonne ?

  6. #6
    Membre émérite
    Avatar de LinkinSelim
    Profil pro
    Enseignant Chercheur
    Inscrit en
    Mars 2006
    Messages
    365
    Détails du profil
    Informations personnelles :
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant Chercheur

    Informations forums :
    Inscription : Mars 2006
    Messages : 365
    Par défaut
    Oui, C'est possible.

    Pour ce faire tu dois créer ton propre TableModel en héritant de la classe AbstractTableModel.
    Par exemple supposons que ta classe Film soit comme suit :
    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
    package org.sdf;
     
    public class Film {
     
    	private int id;
    	private String titre;
    	private String genre;
     
    	public Film(int id, String titre, String genre) {
    		super();
    		this.id = id;
    		this.titre = titre;
    		this.genre = genre;
    	}
     
    	public int getId() {
    		return id;
    	}
     
    	public void setId(int id) {
    		this.id = id;
    	}
    	public String getTitre() {
    		return titre;
    	}
    	public void setTitre(String titre) {
    		this.titre = titre;
    	}
    	public String getGenre() {
    		return genre;
    	}
    	public void setGenre(String genre) {
    		this.genre = genre;
    	}
     
     
    }
    Ton model ressemblera à ca
    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
    package org.sdf;
     
    import java.util.Vector;
     
    import javax.swing.table.AbstractTableModel;
     
    public class FilmTableModel extends AbstractTableModel {
     
    	Vector<Film> films = new Vector<Film>();
     
     
    	@Override
    	public int getColumnCount() {
    		return 2; //Nombre de colones qu'on veut afficher
    	}
     
    	@Override
    	public int getRowCount() {
    		return films.size();
    	}
     
    	@Override
    	public Object getValueAt(int rowIndex, int columnIndex) {
    		if (columnIndex==0) return films.elementAt(rowIndex).getTitre(); //La premiere colonne c'est titre
    		if (columnIndex==1) return films.elementAt(rowIndex).getGenre(); // la deuxieme colonne c'est Genre.
    		return null;
    	}
     
    }
    je t'ai montrée juste qu'il falait implémenter les méthodes :

    public int getRowCount();
    public int getColumnCount();
    public Object getValueAt(int row, int column);

    Tu peu ajouter d'autre méthodes pour peupler ton Vector<Film>.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. POI NullPointerException tomcat sur row.getCell(8).getStringCellValue()
    Par mouss4rs dans le forum API standards et tierces
    Réponses: 1
    Dernier message: 27/01/2012, 11h00
  2. MSSQL 2k: Condition vertical (sur 2 row differente)
    Par mikaeru dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 10/12/2007, 09h17
  3. [2.1.2] Action sur les "rows"
    Par ruby_robber dans le forum BIRT
    Réponses: 14
    Dernier message: 28/08/2007, 17h20
  4. Création d'index sur tables avec 400000 rows
    Par Poisson59 dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/07/2007, 13h53
  5. probleme sur la suppression de rows d'une gridview
    Par kazoumoulox dans le forum ASP.NET
    Réponses: 2
    Dernier message: 19/06/2007, 10h38

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