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] copie d'une liste à une autre


Sujet :

Composants Java

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 85
    Points
    85
    Par défaut [JList] copie d'une liste à une autre
    Bonjour,

    voilà, j'ai 2 JList et je dois copier ce qui est sélectionné de la 1ere dans la 2e. et puis je dois récupérer les valeurs de cette 2e JList.

    je fais comme ceci:

    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
     
    ...
    listExt = new JList(content);
      listExt.setFont(new Font("Verdana", Font.BOLD, 14));
      listExt.setToolTipText("You can select several extensions");
      listExt.setVisibleRowCount(5);
      listExt
        .setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
      listExt.setEnabled(false);
      scroll = new JScrollPane(listExt);
      scroll.setWheelScrollingEnabled(true);
      scroll.setBounds(160, 160, 100, 90);
      scroll.setEnabled(false);
      btnCopy = new JButton(">>>");
      btnCopy.setBounds(300, 160, 100, 30);
      btnCopy.setEnabled(false);
     
      listCopy = new JList();
      listCopy.setFont(new Font("Verdana", Font.BOLD, 14));
      listCopy.setVisibleRowCount(5);
      listCopy
        .setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
      listCopy.setEnabled(false);
      scrollCpy = new JScrollPane(listCopy);
      scrollCpy.setWheelScrollingEnabled(true);
      scrollCpy.setBounds(440, 160, 100, 90);
      scrollCpy.setEnabled(false);
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    ...
    if (e.getSource() == btnCopy) {
        listCopy.setListData(listExt.getSelectedValues());
        cont.repaint();
       }
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    ... 
    public static String[] getExtension(){
      String[] tabExt= null;
      for(int i = 0; i < listCopy.getModel().getSize(); i++) {
           tabExt[i] = listCopy.getModel().getElementAt(i).toString();
       }
      return tabExt;
     }
    ...
    mais quand j'utilise da dernière méthode, elle me renvoie null, alors ke je vois bien que la 2e est bien remplie.

    que se passe-t-il?

    et aussi comment faire pour ajouter des choses de la 1ere liste dans la 2e une par une sans effacer le contenu de la 2e?

    merci

    delph

  2. #2
    Membre émérite
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Points : 2 410
    Points
    2 410
    Par défaut
    Edit : Bonjour,

    Si tu as vraiment écrit ça, tu devrais avoir une NullPointerException. Rajoute la ligne en bleu :
    Citation Envoyé par delph1983
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public static String[] getExtension(){
      String[] tabExt= null;
      tabExt = new String[listCopy.getModel().getSize()];
       for(int i = 0; i < listCopy.getModel().getSize(); i++) {
           tabExt[i] = listCopy.getModel().getElementAt(i).toString();
       }
      return tabExt;
     }
    Pour ajouter des éléments sanseffacer la liste, il ne faut pas utiliser setListData :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    if (e.getSource() == btnCopy) {
        listCopy.setListData(listExt.getSelectedValues()); // à dégager !
    
        Object[] values = listExt.getSelectedValues();
        for(int i = 0; i < values.length; i++)
          listCopy.getModel().add(values[i]);
         cont.repaint();
    }

  3. #3
    Membre régulier Avatar de _KB_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Points : 92
    Points
    92
    Par défaut
    la méthode "add" n'est pas définit pour la classe ListModel

    Sinon moi j'utilise ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Object[] values = outputList.getSelectedValues();
    DefaultListModel outputListModel = (DefaultListModel )outputList.getModel);
    DefaultListModel inputListModel = (DefaultListModel )inputList.getModel();
    for (int i = 0; i<values.length; i++) 
         inputListModel.addElement(values[i]);
    Mais mon Cast semble poser problème :


    xception in thread "AWT-EventQueue-1"
    java.lang.ClassCastException: javax.swing.JList$1
    at com.st.graphics.MyJList$AddButtonAction.actionPerformed(
    MyJList.java:68)
    ...

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Tout simplement car le model que tu as mis à la base ne doit pas hériter de DefaultListModel

  5. #5
    Membre régulier Avatar de _KB_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Mars 2006
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Mars 2006
    Messages : 110
    Points : 92
    Points
    92
    Par défaut
    Edit : j'ai trouvé mon erreur entre temps:

    Initialisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    outputListModel = new DefaultListModel();
       outputList = new JList(outputListModel);
        outputList.setVisibleRowCount(VISIBLE_ITEMS);
         JScrollPane outputListScroll = new JScrollPane(outputList);
      inputListModel = new DefaultListModel(); 
       inputList = new JList(inputListModel);
        inputList.setVisibleRowCount(VISIBLE_ITEMS);
         JScrollPane inputListScroll = new JScrollPane(inputList);
    Listeners :

    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
    class AddButtonAction implements ActionListener {
      public void actionPerformed(ActionEvent e) {
       Object[] values = outputList.getSelectedValues();
       for (int i = 0; i<values.length; i++) {
        inputListModel.addElement(values[i]);
        outputListModel.removeElement(values[i]);
       }
      }
     }
     class RemoveButtonAction implements ActionListener {
      public void actionPerformed(ActionEvent e) {
       Object[] values = inputList.getSelectedValues();
       for (int i = 0; i<values.length; i++) {
        outputListModel.addElement(values[i]);
        inputListModel.removeElement(values[i]);
       }
      }
     }

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 85
    Points
    85
    Par défaut
    merci beaucoup!!!!

Discussions similaires

  1. Réponses: 4
    Dernier message: 01/04/2019, 18h52
  2. [SP-2007] Workflow VS2008 qui copie un élément d'une liste vers un autre
    Par hassine dans le forum SharePoint
    Réponses: 10
    Dernier message: 29/10/2010, 15h47
  3. Basculer des éléments d'une liste à l'autre
    Par PAYASS59 dans le forum Général JavaScript
    Réponses: 34
    Dernier message: 11/07/2007, 11h51
  4. [VBA-E] Fleche d'une liste à l'autre - userform
    Par cwain dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 22/03/2007, 12h07
  5. [Swing][JList] Placer un Objet dans une liste
    Par Invité dans le forum Composants
    Réponses: 1
    Dernier message: 17/02/2006, 10h31

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