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, souci de séléction après avoir ajouter un CellRenderer


Sujet :

Composants Java

  1. #1
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Points : 340
    Points
    340
    Par défaut JTable, souci de séléction après avoir ajouter un CellRenderer
    Voila, au départ, si je cliquais sur une ligne, toutes la ligne se mettait en surbrillance (meme toutes les lignes séléctionné).
    J'ai rajouté un CellRenderer pour changer les couleurs et la font de certaine ligne en fonction des actions de l'utilisateur.
    Mais maintenant, en cliquant sur une ligne, seul la cellule est selectionnée, pas de surbrillance ou autre. De plus, même après avoir effectué un
    tableModalite.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
    je ne peux pas selectionner plusieurs ligne/case à la fois.

    Je définis le renderer de ma table, et le mode de selection de la sorte
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    tableModalite.setDefaultRenderer(Object.class,new MonCellRenderer(question));
    		tableModalite.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);

    Et voici mon MonCellRenderer

    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
    package ihm;
     
    import java.awt.Color;
    import java.awt.Component;
    import java.awt.Font;
     
    import javax.swing.JTable;
    import javax.swing.table.DefaultTableCellRenderer;
    import javax.swing.text.Style;
     
    import noyau.Individus;
    import noyau.Modalite;
    import noyau.Question;
    import noyau.Questionnaire;
     
     
     
    public class MonCellRenderer extends DefaultTableCellRenderer 
    {
     
    	Questionnaire questionnaire;
    	Individus individus;
    	Question question;
     
    	/**
             * Constructeur pour les tableaux de la fenetre FPragma 
             * @param cQuestionnaire
             */
     
    	public MonCellRenderer(Questionnaire cQuestionnaire)
    	{
    		super();
    		questionnaire=cQuestionnaire;
    	}
     
    	/**
             * Constructeur pour le tableau de la fenetre FSaisieQuestion en mode saisie réponse
             * @param cQuestionnaire
             * @param cIndividus
             */
    	public MonCellRenderer (Question cQuestion, Individus cIndividus)
    	{
    		super();
    		question=cQuestion;
    		individus=cIndividus;
    	}
     
    	/**
             * Constructeur pour le tableau de la fenetre FSaisieQuestion en mode création questionnaire
             * @param cQuestion
             */
    	public MonCellRenderer(Question cQuestion)
    	{
    		super();
    		question=cQuestion;
    	}
     
    	public Component getTableCellRendererComponent(JTable table,Object value,boolean isSelected,boolean hasFocus,int row,int column)
    	{
    		Component comp = super.getTableCellRendererComponent(table,value,isSelected,hasFocus,row,column);
     
    		String str= (String)table.getValueAt(row, 1);
    		int rang = Integer.parseInt(str);
     
    		//On affiche une ligne sur deux en gris leger pour bien aider la distinction.
    		if(row%2==0)
    			super.setBackground(Color.white);
    		else
    			super.setBackground(new Color(221,221,221));
     
     
    		//Si la ligne est selectionné par l'utilisateur, on la souligne
    		super.setFont(new Font("Serif",Font.BOLD,14));
     
    		if(question!=null)
    		{	
    			for(int i =0; i<question.getListeModalite().size(); i++)
    			{
    				Modalite m = (Modalite)question.getListeModalite().get(i);
    				if(m.isSelectionee())
    					super.setForeground(new Color(126, 178,0));
    				else
    					super.setForeground(new Color(216,11, 41));
    			}
    		}
     
     
     
    		return comp;
    	}
    }

    De plus, j'ai un autre souci. J'ai un listener pour le clic droit sur ma jtable, qui ouvre un menu et dont les actions se font sur les lignes selectionnée. (enfin ca c'était quand mes lignes pouvaient l'être mais bon^^)
    Or, le clic droit ne selectionne pas la ligne, ce qui dans certain cas, pose soucis. Je pensais donc au moment d'effectuer un clic droit simuler un clic gauche avant (avec certaine restriction, notament si plusieurs lignes ont déjà été séléctionnée) mais comment se déroule l'action du clic gauche sur une JTable ? Et, est ce qu'il ya une solution plus interessante ?

    Enfin une dernière question, pas vraiment de la programmation, mais bon je veux donc que l'on puisse selectionné plusieurs lignes à la fois, mais que toute la ligne soit selectionnée à chaque fois. Mais je voudrais également pouvoir séléctionné plusieurs cellule à la fois. Tout les clic sont déjà utilisé, le ctrl Clic addition les lignes, le shift aussi. Je me demandais dons si le alt pouvait être interesant, ou ca serait déroutant pour l'utilisateur ?
    Voila voila ^^

  2. #2
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Points : 340
    Points
    340
    Par défaut
    Petit up de la 2eme page ^^
    Si quelqu'un a une idée d'ou vient le problème, ou au pire d'une bidouille pas trop sale qui pourrait faire l'affaire ?

  3. #3
    Membre régulier
    Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    83
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 83
    Points : 101
    Points
    101
    Par défaut
    Salut,

    dans la méthode getTableCellRendererComponent(....)
    y'un paramètre boolean isSelected

    C'est lui qui va te permettre de changer le comportement de ton composant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(isSelected)
       monComposant.setBackground(...Couleur de fond d'une selection ....)
    else
       monComposant.setBackground(...Couleur de fond normale ....)
    En epsérant que cela te convienne,
    Bon week end !

  4. #4
    Membre averti
    Inscrit en
    Juin 2006
    Messages
    570
    Détails du profil
    Informations forums :
    Inscription : Juin 2006
    Messages : 570
    Points : 340
    Points
    340
    Par défaut
    Merci beaucoup, ca à l'aire d'être bon ^^

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/05/2014, 11h44
  2. Tomcat s'arrête après avoir ajouté JPA
    Par sigway dans le forum Tomcat et TomEE
    Réponses: 3
    Dernier message: 24/04/2013, 17h16
  3. Réponses: 2
    Dernier message: 23/12/2010, 15h01
  4. Réponses: 6
    Dernier message: 02/06/2008, 10h17
  5. Réponses: 14
    Dernier message: 16/12/2007, 15h01

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