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 :

Selection dans une JTable


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de ythim
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 76
    Par défaut Selection dans une JTable
    Bonjour à tous,
    Je dois réaliser un planning en java et j'utilise une JTable pour cela, j'ai créé ma JTable et je lui ai associé un model, et un Renderer pour pouvoir afficher les données sous formes de JPanel tout marche parfaitement l'affichage se fait sans souci cependant j'ai un probléme dans la selection des cellules je n'arrive plus à selectionner les cellules... par sélectionner j'entend la bordure de couleur autour ou un changement significatif ... je pense que ca vient de mon Renderer mais j'avoue que je ne sais pas trop comment faire...

    Si quelqu'un à un idée merci d'avance, je pense que c'est pas grand chose...

    Pour plus d'info voila : ma création de ma JTable:
    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
    myModel = new planningModel(tabPoste,tabreserv);
       jPlanningTable = new JTable(myModel);
       jPlanningTable.setDefaultRenderer(Reservation.class,new planningRenderer());
       jPlanningTable.setCellSelectionEnabled(true);
     
    jPlanningTable.setAutoResizeMode(JTable.AUTO_RESIZE_OFF);
       TableColumn column = null;
       TableRow row = null;
      for (int i = 0; i < this.tabPoste.size(); i++) {
           column = jPlanningTable.getColumnModel().getColumn(i);
            column.setPreferredWidth(100);
            column.setMaxWidth(100); 
            column.setMinWidth(100); 
            column.setResizable(false);      
      }
    la déclaration de mon Model contien la fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    public boolean isCellEditable(int rowIndex, int columnIndex) {
      return true;
      }
    et mon Renderer est defini de la facon suivante :
    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
    public Component getTableCellRendererComponent(JTable table, Object value, boolean isSelected, boolean hasFocus, int row, int column) {
            Reservation r = (Reservation)value;
            if(r!=null){
             String nom = r.getUtilisateur_reservation().getNom();
                String prenom = r.getUtilisateur_reservation().getPrenom_utilisateur();
                Color couleur = r.getEtat_reservation().getColor_etat();
     
                JPanel panel = new JPanel();
          JLabel jLabel1 = new JLabel();
          jLabel1.setText(prenom);
          jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
          jLabel1.setPreferredSize(new java.awt.Dimension(90,16));
          JLabel jLabel = new JLabel();
          jLabel.setText(nom);
          jLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
          jLabel.setPreferredSize(new java.awt.Dimension(90,16));
          panel.setLayout(new FlowLayout());
          panel.setSize(100, 189);
          panel.add(jLabel, null);
          panel.add(jLabel1, null);
     
                panel.setBackground(couleur);
                jLabel.setForeground(Color.BLACK);
                jLabel1.setForeground(Color.BLACK);
                return panel;
            }
            else{
             JPanel pan = new JPanel();
             pan.setBackground(Color.CYAN);
             return pan;
            }
     
        }

  2. #2
    Membre confirmé Avatar de zoullou
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Par défaut
    Est ce que cette methode est executée lorsque tu selectionne une cellule ?
    Je pense que oui. Je pense donc que c'est a toi de "dessiner" des bords pour la cellule afin que celle-ci apparaisse comme selectionnée.

    A+

  3. #3
    Membre confirmé Avatar de ythim
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 76
    Par défaut
    Ca veut dire que des que l'on passe par une renderer, la methode par defaut de sélection d'une cellule qui "colorie" les bords de la cellule ne fonctionne pas ...


    C'est a moi de definir une methode dans mon renderer qui est appeler lorsque je click sur ma cellule??

    Si c'est ca la solution quelqu'un peut il m indiquer comment mettre en place cette solution...

  4. #4
    Membre confirmé Avatar de zoullou
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 130
    Par défaut
    Citation Envoyé par ythim
    Ca veut dire que des que l'on passe par une renderer, la methode par defaut de sélection d'une cellule qui "colorie" les bords de la cellule ne fonctionne pas ...
    C'est a moi de definir une methode dans mon renderer qui est appeler lorsque je click sur ma cellule??
    Je n'en suis pas sur mais je pense.

  5. #5
    Membre confirmé Avatar de ythim
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    76
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 76
    Par défaut
    Je galere toujours , quelqu'un pourrait il me dire la methode a suivre pour donner un affichage spécifique à la cellule de ma JTable qui est Selected

    L'objectif serait de changer la couleur en background du JPanel de la Cellule.
    Faut-il que j'implémente une fonction de mon Renderer ???

    J'ajoute à ce post une question subsidiaire est il possible de rendre Selected une cellule grace a un click droit (et non un click gauche) sur celle ci... J'utilise un popupmenu qui s affiche grave au click droit et dedans certaine methode on besoin d avoir une cellule selected je voudrais que ce soit celle sur laquel on effectue le click droit...

    C'est peut etre pas tres clair, mais peut etre que quelqu'un comprendra mon souci.
    Merci à tous

Discussions similaires

  1. Multi-selection dans une ComboBox ?
    Par Moloko dans le forum MFC
    Réponses: 5
    Dernier message: 07/07/2021, 17h26
  2. [Sybase] résultat d'un select dans une variable
    Par stoz dans le forum Sybase
    Réponses: 2
    Dernier message: 14/09/2004, 14h28
  3. Réponses: 8
    Dernier message: 05/05/2004, 16h28
  4. [Sybase] Select dans une select loop en C
    Par Claudio dans le forum Sybase
    Réponses: 2
    Dernier message: 29/04/2003, 18h06
  5. faire un selection dans une image aves les APIs
    Par merahyazid dans le forum C++Builder
    Réponses: 3
    Dernier message: 30/04/2002, 10h44

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