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 :

JList et JchekBox dynamiques


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Par défaut JList et JchekBox dynamiques
    Bien l'bonjour!

    Je suis face à un problème de taille : je développe une appli permettant d'administrer des serveurs (jvous passe les détails lol)

    Dans mon cas précis, j'ai une fenêtre (JInternalFrame) qui s'ouvre suite à une sélection de x serveurs... je souhaite, pour chaque serveur sélectionné précédemment (donc nombre variable), mettre 3 JCheckBox en face de chaque nom...

    Etant donné que je peux avoir aussi bien 10 serveurs que 50, dans le cas de 50 tout ne vas pas rentrer dans ma fenêtre. J'ai donc réfléchis (sisi jvous assure) et j'ai trouvé 2 solutions réalisables :
    - partir sur la base de 5 noms de serveus par fenêtre, et mettre en place des boutons suivant et précédent pour passer aux 5 serveurs suivants ou précédents,
    - utiliser des JList et JScrollPane, donc avoir une barre de défilement sur la droite. Seulement cela ne me régle pas le problème des CheckBox : il doit y avoir 3 checkbox en face de chaque nom de serveur...

    Pour ceux qui ont ptêtre pas compris mon explication todue, voici un schéma :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Nom serveur      Data      Redirect      Supervis
      serv1            x
      serv2                       x
      serv3            x
       ...
    Voilà donc on partant sur la deuxième solution, jme demandais si c'était possible de tout mettre dans la JList, cad pouvoir faire défiler les noms et les check box

    Si quelqu'un m'a compris merci de m'aider

  2. #2
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Dans ton cas je m'orienterais plutôt vers une JTable qui est faite pour ça plutôt qu'une JList

    Avec un DefaultTableModel un peu redéfini pour faire apparaître directement les checkboxes au lieu des valeurs des booléens que tu manipule et le tour est joué

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Par défaut
    ha oui bien vu!

    par contre puis je me permettre de te demander du code car j'ai jamais utilisé cela...

    pour info, je travaille avec un Vecteur contenant les noms des serveurs, par défaut le checkbox coché est data

  4. #4
    Membre confirmé
    Inscrit en
    Mai 2004
    Messages
    69
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 69
    Par défaut
    hein juanito
    tu veux du code de JTable c'est ca??

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Pour la JTable je ne vais pas franchement te faire de dessin, la JTable a un constructeur prenant un paramètre un TableModel.
    Pour récupérer les évènements utilisateur tu vas utiliser un TableModelListener sur le model de ta JTable.

    Donc dans l'ordre tu crées une classe Héritant de DefaultTableModel, et tu redéfinis la méthode getColumnClass pour renvoyer Boolean.class pour que ta JTable affiche des JCheckBox à la place de la valeur de ton Boolean(c'est pas franchement propre mais bon, vu que tu ne veux mettre que des checkboxes dans ta table, on va pas trop chipoter non plus), et les méthodes dont tu vas avoir besoin, mais pour l'instant je n'en vois aucune à redéfinir, elles font déja tout ce que tu demande.
    Pense également à redéfinir les contructeurs de ton model en fontion des constructeurs du DefaultTableModel
    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public class MyModel extends DefaultTableModel {
     
       public MyModel(Object[][] data, Objetc[] columnNames) {
           super(data, columnNames);
       }
    }
    Normalement il y en a plus mais j'ai la flemme de la faire

    Puis tu crées ton modèle, puis ta JTable (crées une classe étendant JTable et implémentant TabkleModelListener, il te faudra avec le modèle créé.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public class MyTable Extends JTable implements TableModelListener {
       ....
     
       //redéfinis la méthode valueChanged
       protected void valueChanged(<a href="http://java.sun.com/j2se/1.5.0/docs/api/javax/swing/event/TableModelEvent.html" target="_blank">TableModelEvent</a> e){
        doSomething()
      }
    }
    Tu ajoute un TableModelListener sur ton model

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    myModel.addTableModelListener(myTable);
    Et puis tu as un peu de matière, bon code

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Par défaut
    ok merci jvais essayer avec ça

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2005
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 288
    Par défaut
    Bon je suis bloqué là...

    Voici cque j'ai fait :

    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
    // =====  definition of the DataFileTableModel class  ====================
    public class DataFileTableModel extends AbstractTableModel
    {
     protected Vector data;            // data
     protected Vector serverNames ;    // server names
     protected Vector columnNames;   // names of the column
     protected Vector temp;     // recuperation vecteur passé en param
     public DataFileTableModel(Vector serverAllocated)
     {
               initVectors(serverAllocated);
     }
     public void initVectors(Vector vect)
     {
      columnNames = new Vector();
      serverNames = new Vector();
      for(int i = 0; i < vect.size(); i++)
      {
       serverNames.addElement(vect.get(i).toString());
      }
      columnNames.addElement("Server name");
      columnNames.addElement("Data");
      columnNames.addElement("Redirector");
      columnNames.addElement("Supervisor");
      // mettre dans vecteur data donnée relatives aux check box
     }
     /** Nombre de colonnes */
     public int getColumnCount()
     {
      int NbColumn = 4
      return NbColumn;
     }
     /** Nombre de lignes */
     public int getRowCount()
     {
      return serverNames.size();
     }
     /** Noms des colonnes */
     public String getColumnName(int columnIndex)
     {
      String colName="";
      if (columnIndex <= getColumnCount())
       colName=(String)columnNames.elementAt(columnIndex);
      return colName;
     }
     /** Type de contenu d'une colonne */
     public Class getColumnClass(int columnIndex)
     {
      if (columnIndex == 1)
          return String.class;
         if ((columnIndex >1) && (columnIndex <=4))
          return Boolean.class;
     }
     /** Possibilité d'édition des données */
     public boolean isCellEditable(int rowIndex, int columnIndex)
     {
      if (columnIndex == 1)
       return false;
      if ((columnIndex >1) && (columnIndex <=4))
       return true;
     }
     /** Contenu d'une cellule */
     public Object getValueAt(int rowIndex, int columnIndex)
     {
      if (columnIndex == 1)
       return (String)serverNames.elementAt(rowIndex);
      if ((columnIndex >1) && (columnIndex <=4))
      {
       ????????????????
      }
     }
     /** Changement du contenu d'une cellule */
     public void setValueAt(Object aValue, int rowIndex, int columnIndex)
     {
     }
    }
    Pour ce qui est l'ajout de texte (par exemple nom des servers) ya pas de problème, mais dès qu'il s'agit de gérer les chek box je comprends plus rien...

    Help meeeeeeeeeeeeeee

Discussions similaires

  1. Gérer le ré-affichage d'une JList dynamique
    Par zorglubpok dans le forum Composants
    Réponses: 11
    Dernier message: 04/11/2009, 14h22
  2. [JList] Modification dynamique
    Par qwiskas dans le forum Composants
    Réponses: 4
    Dernier message: 23/02/2009, 11h45
  3. Probleme JList / JList Model / Evolution dynamique
    Par SebastianPx dans le forum Composants
    Réponses: 1
    Dernier message: 10/02/2009, 12h14
  4. [JScrollPane] n'affiche pas toute ma JList dynamique
    Par Strab dans le forum Composants
    Réponses: 4
    Dernier message: 01/07/2008, 16h57
  5. Mise a jour dynamique d'une Jlist ou d'un panel
    Par skyangel dans le forum Composants
    Réponses: 5
    Dernier message: 14/06/2008, 07h32

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