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 :

[JTable] cell renderer


Sujet :

Composants Java

  1. #1
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut [JTable] cell renderer
    Bonjour à tous,

    je suis actuellement en train de developper une appli en swing.
    Un de mes panel contient un JTable qui repose sur un modele.
    Jusqu'ici rien de formidable

    mon problème est le suivant:
    une des colonne (la 5eme) contient une liste de String. Cette liste est differente d'une ligne à l'autre.

    je veux que le rendu se fasse de la façon suivante:
    a l'affichage du tableau, la 5 eme colonne ne montre que le premier elements de la liste et si on clic dessus , une combo se deroule avec la liste des String disponible pour cette ligne.

    A la construction de mon modele, en colonne 5 je lui donne donc le premier element de la liste correspondant a la la ligne.
    la colonne 6 est une colonne cachée qui contient la liste entiere

    ensuite lorsque j'affiche mon tableau j'applique le code suivant:

    pour chaque ligne créer une combo avec les bonnes valeurs
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    for (int j = 0; j < list.size(); j++) { //list.size == nbre de ligne
        JComboBox synCombo = new JComboBox();
        ArrayList listSyn = (ArrayList)model.getValueAt(j,6); //6 == colonne cachée
        for (int i = 0; i < listSyn.size(); i++){ //listSyn = liste de termes
    	synCombo.addItem((String)listSyn.get(i));
        }
     
        TableColumnModel columnModel = table.getColumnModel();
        TableColumn synColumn = columnModel.gettColumn(SimpleImportModel.SYN_COLUMN);
        synColumn.setCellEditor(new DefaultCellEditor(synCombo));
    }
    le probleme est que cette derniere partie de code applique un rendu a l'ensemble de la colonne. Donc l'ensemble des cellules de la colonne contiennent la meme liste de termes : celle de la derniere ligne du tableau...

    Est ce que quelqu'un sait comment appliquer le rendu non pas sur l'ensemble de la colonne mais sur une cellule specifique puisque chaque cellule de la 5eme colonne doit contenir sa propre liste dans la combo.

    j'espere que je suis clair

    merci pour suggestions

    Stephane

  2. #2
    Membre régulier
    Inscrit en
    Avril 2005
    Messages
    63
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 63
    Points : 85
    Points
    85
    Par défaut
    je remarque qu'a chaque ligne tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    synColumn.setCellEditor(new DefaultCellEditor(synCombo));
    et donc tu reaffecte le combo à la colonne entière
    Pour resoudre le probleme essaie de construire la liste dynamiquement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    synColumn.setCellEditor(new DefaultCellEditor(new JComboBox()) {
    	public Component getTableCellEditorComponent(JTable table,
    Object value, boolean isSelected, int row, int column) {
    	     JComboBox cb = (JComboBox) editorComponent;
    	     cb.removeAllItems();
    	    //remplir le comboBox en fonction de row
    	     return editorComponent;
           }
    });

  3. #3
    Membre averti Avatar de biozaxx
    Profil pro
    Inscrit en
    Août 2004
    Messages
    403
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 403
    Points : 375
    Points
    375
    Par défaut
    Genial
    ça résout le problème.

    Merci pour ton aide.

    @+

    Stéphane

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 27/06/2013, 08h46
  2. Réponses: 5
    Dernier message: 29/08/2007, 16h11
  3. [JTABLE][MODEL][RENDERER]Communication
    Par cameleon2002 dans le forum Composants
    Réponses: 1
    Dernier message: 31/12/2005, 14h36
  4. [Jtable] DefaultTableModel renderer des boolean
    Par lilou77 dans le forum Composants
    Réponses: 2
    Dernier message: 20/12/2005, 15h32
  5. [Swing]Case a cocher JTable, et Renderer
    Par bibx dans le forum Composants
    Réponses: 16
    Dernier message: 29/12/2004, 14h49

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