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 :

probleme d'utilisation de l'evenement de jlist


Sujet :

Composants Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut probleme d'utilisation de l'evenement de jlist
    Salut,
    j'ai besoin d'afficher une jliste (avec un grand nombre d'éléments ) lors de relachement de la sourie et aussi je veux récupérer l'element sélectionné d'une jliste

    le premier code c'est la classe jlist
    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
    import javax.swing.JFrame;
    import javax.swing.JList;
    import javax.swing.JLabel;
    import java.awt.BorderLayout;
    import javax.swing.event.ListSelectionEvent;
    import javax.swing.event.ListSelectionListener;
    import java.awt.Font;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Iterator;
    import java.util.List;
    import java.util.logging.Level;
    import java.util.logging.Logger;
    import javax.swing.DefaultListModel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import org.apache.poi.EncryptedDocumentException;
    import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
     
    public class jliste extends JFrame  {
     JList liste = new JList();
     
     
     public jliste() throws IOException, FileNotFoundException, EncryptedDocumentException, InvalidFormatException {
     	BorderLayout borderLayout = (BorderLayout) getContentPane().getLayout();
     	borderLayout.setHgap(100);
     
     //String choix[] = {" Ranap", " Rnsap", " Nbap", " RRC"};
     List<String> ranapdl= new java.util.ArrayList<>();
    			List<String> ranapul= new java.util.ArrayList<>();
    			List<String> ranap= new java.util.ArrayList<>();
    			List<String> rnsapdl= new java.util.ArrayList<>();
    			List<String> rnsapul= new java.util.ArrayList<>();
    			List<String> rnsap= new java.util.ArrayList<>();
    			List<String> nbapdl= new java.util.ArrayList<>();
    			List<String> nbapul= new java.util.ArrayList<>();
    			List<String> nbap= new java.util.ArrayList<>();
    			List<String> rrcdl= new java.util.ArrayList<>();
    			List<String> rrcul= new java.util.ArrayList<>();
    			List<String> rrc= new java.util.ArrayList<>();
    			List<String> vide= new java.util.ArrayList<>();
     
    excelreader ex=new excelreader("Call Trace info.xls",vide,ranapdl,ranapul,ranap,rnsapdl,rnsapul,rnsap,rrcdl,rrcul,rrc,nbapdl,nbapul,nbap);
     
    List<String> listf=ex.getfull_list();
    /*for (Iterator it=listf.iterator();it.hasNext();){
     
     
                System.out.println(it.next());}*/
     
       DefaultListModel listModel = new DefaultListModel();
      int size = listf.size();
            for (int index = 0; index < size; index++) {
                listModel.addElement(listf.get(index));
            }
            liste.setModel(listModel);
     
     liste.setFont(new Font("Engravers MT", Font.PLAIN, 11));
         JScrollPane jScrollPane6 = new javax.swing.JScrollPane();
         JPanel jPanel3 = new javax.swing.JPanel();
         jPanel3.setBounds(10, 110, 60, 10);
     
     jScrollPane6.setViewportView(liste);
      jPanel3.add(jScrollPane6, java.awt.BorderLayout.CENTER);
    getContentPane().add(jPanel3);
    setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
    pack();
    setVisible(true);
     
     
    liste.addListSelectionListener(this::listeValueChanged);
     }
     
    public List<String> listeValueChanged(ListSelectionEvent e) {
     
      String nom1 = (String) liste.getSelectedValue();
    List<String> listsele= new java.util.ArrayList<>();
            if (e.getValueIsAdjusting() == true){
    	System.out.println(nom1);
            listsele.add(nom1);
            setVisible(false);
    }
    return listsele;
    }
     
     
     
     
     
    }
    je veux afficher ma liste lors de relachement de la sourie(instanciation de classe jliste dans la methode released) et aussi de recuperer l'element selectionne de la liste dans la meme methode de mouse released
    le deuscieme code c'est une autre classe ou elle contient la methode de mouse released
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     public void mouseReleased(MouseEvent e) {
                        draw(e.getX());
     
                        try {
                            jliste    b= new jliste();
     
                            ListSelectionEvent   ev;//j'arrive pas à utiliser l'evenenment de selection de la liste dans cette methode
                            List<String> listee= b.listeValueChanged( ev);
                            System.out.println( listee.get(0));//c'est un test d'affichage,mais je veux utiliser cet element dans cette classe pour faire un drawString(liste.get(0),x,y);
    merci d'avance pour vos reponse

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    De quel mouse released on arle là? C'est assez curieux, en général on va afficher des composants supplémentaires dans une interface en réaciton à des clics ou des actions, pas à des mouse released qui sont beaucoup trop généraux.

    Ensuite, tu essaie de faire quoi avec ce code?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                            ListSelectionEvent   ev;//j'arrive pas à utiliser l'evenenment de selection de la liste dans cette methode
                            List<String> listee= b.listeValueChanged( ev);
    Tu essaie de créer un évènement de selection changed? Il il y a bien une méthode fireSelectionChanged dans la liste, mais elle est protégée et de toutes façons tu ne devrais pas avoir à envoyer toi même cette évènement, il se déclenche tout seul quand tu change la valeur sélectionnée.

    Si ce que tu veux faire au contraire c'est être notifié quand un élément sera sélectionné, il faut utiliser la méthode addListSelectionListener, ce que tu as d'ailleurs déjà fait dans ta JFrame.

    Par contre, la méthode que tu référence comme listener renvoie une valeur, cette valeur n'est absolument pas utilisée par swing, les listeners renvoient void pour swing. Je crois que ta confusion viens de là. Tu dois stocker tes valeurs calculées par le listener dans ta classe par exemple, et fournir un accès à ces valeurs via une méthode par exemple.

    Aussi, si le but de ta frame c'est de s'afficher quand on clique sur quelque chose, choisir une valeur, puis disparaitre et on continue le travail sur ce qu'on faisait avant, je te conseille d'étendre JDialog au lieu de JFrame, c'est plus adapté à ton besoin. Une JDialog peut e^tre modale et interrompre le travail en attendant d'être cachée. Pour ça il suffit d'appeler setModalityType(Dialog.DEFAULT_MODALITY_TYPE) dessus avant de l'afficher.

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut
    le mouse released c'est une methode d'une autre interface(autre fenetre) (classe Exemple )ou je veux afficher l'interface jliste lors de relachement de ma sourie
    voila la classe Exemple
    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
    public class Exemple extends JPanel {
     
     
    	private static final int MARGETOP = 50;
    	private static final int WIDTH = 100;
    	private static final int H = 60;
    	private static final int HEIGHT = 3 * H;
    	private static final int MARGIN = 5;
    	private static final int ARROW = 5;
     
    	private Rule[] rules = new Rule[5];
    	private List<Arrow> arrows = new ArrayList<>();
     
    	private int y = MARGETOP + H / 2;
    	private Arrow currentArrow; 
     
    	public Exemple() {
     
     
    		String[] ruleNames = { "UE", "NodeB", "DRNC", "SRNC", "CN" };
    		int x = 0;
    		for (int i = 0; i < rules.length; i++, x += WIDTH) {
    			rules[i] = new Rule(ruleNames[i], x, WIDTH);
    		}
     
    		setPreferredSize(new Dimension(860, 768));
     
                    JButton jButton8 = new javax.swing.JButton();
    		MouseAdapter mouseAdapter;
                mouseAdapter = new MouseAdapter() {
     
                    @Override
                    public void mousePressed(MouseEvent e) {
                        currentArrow = createArrow(e.getPoint());
                        repaint();
                    }
     
                    @Override
                    public void mouseDragged(MouseEvent e) {
                        updateArrow(e.getPoint());
                        repaint();
                    }
     
                    @Override
                    public void mouseReleased(MouseEvent e) {
     
                        updateArrow(e.getPoint());
                       int z=e.getY();
                        saveArrow();
                   jliste li=    new jliste();
                  List<String> lis=    li.ListSelectionValue(ev);
       System.out.println(lis.get(0));
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     List<String> lis=    li.ListSelectionValue(ev);
    pour ce code j'ai besoin de recuperer le nom de l'element selectionné de la jliste pour que je pourrais l'utiliser dans drawString()
    dans l'interface exemple

  4. #4
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    pour connaitre l'élément sélectionné dans une jlist il suffit de faire appel à sa méthode getSelectedValue(), tout simplement

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2017
    Messages
    108
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 32
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Février 2017
    Messages : 108
    Par défaut
    Salut tchize,
    la methode getSelectedValue() donne null..normalement listSelectionEvent qui fait l'ecoute de la jliste c'est ça le probleme ..

  6. #6
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    Si getSelectedValue te retourne null, c'est que rien n'est sélectionné. L'event sert juste à être notifié quand ça change. Ce n'est pas la manière dont tu es censé lire la valeur sélectionnée.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 22/01/2007, 21h51
  2. Probleme d utilisation de template dans le cpp
    Par Math75 dans le forum Langage
    Réponses: 2
    Dernier message: 07/10/2005, 16h26
  3. [Système][Environnement] Problème d'utilisation?!?
    Par waldo2188 dans le forum Général Java
    Réponses: 5
    Dernier message: 23/03/2005, 17h18
  4. Probleme d'utilisation de directX 9 avec visual studio.net
    Par cranedoeuf dans le forum DirectX
    Réponses: 1
    Dernier message: 24/05/2004, 04h33
  5. [Debutant] probleme pour utiliser les classes d'un .jar
    Par pissek dans le forum Eclipse Java
    Réponses: 3
    Dernier message: 12/05/2004, 18h21

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