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

AWT/Swing Java Discussion :

installer des listeners


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Par défaut installer des listeners
    bonjour

    J'ai bien lu la FAQ Java GUI, notamment la partie sur les listeners mais j'ai du mal à comprendre comment l'installer dans mon cas.

    J'ai donc une premiere classe qui extends JLayeredPane et qui contient 2 panels.
    - le premier contient des elements dont une scrollbar qui contient une JTable.
    - le second est un JPanel form

    les 2 sont initialisés dès le début mais le second est invisible. Il ne devient visible que quand l'utilisateur clique sur une ligne de la JTable (qui est dans une scrollbar dans panel1).

    Je veux gérer les événements dans mon JLayeredPane (pour faire un moveToFront de mon panel2 lors du clic) mais je n'arrive pas à installer mon listener à partir d'ici pour écouter le clic souris sur la JTable.

    des idées ?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Par défaut
    Voici la solution que j'ai trouvée :

    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
    public class mainClass extends JLayeredPane implements MouseListener
    {
     
    	JMyPane panel1;
    	JMyOtherPane panel2;
     
    	public mainClass ()
    	{
     
    		this.setLayout(new BorderLayout());
    		panel2= new JMyOtherPane ();
    		this.add(panel2);
    		panel2.setVisible(false);
     
    		panel1= new JMyPane ();
    		this.add(panel1);
    		panel1.setVisible(true);
    		moveToFront(panel1);
     
    		Component zeTable = ((JScrollPane)panel1.getComponent(1)).getViewport().getComponent(0);
    		zeTable.addMouseListener(this);
              }
     
    	public void mousePressed(MouseEvent e) {
     
    	}
     
    	public void mouseReleased(MouseEvent e) {
    		panel2.setVisible(true);
                    this.moveToFront(panel2);
     
    	}
    (...)
    }
    mais l'IDE me met un warning à la ligne : zeTable.addMouseListener(this);
    en me disant "leaking this in constructor"

    c'est pas là que je dois ajouter mon listener ?

  3. #3
    Membre actif Avatar de arafat877
    Inscrit en
    Septembre 2010
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 46
    Par défaut Une petite solution
    Salut

    Le warning, en fait si tu utilise une dernière version d´un IDE notamment NetBeans, il deconseil de passer this comme paramètre à un constructeur, mais c´est pas grâve.

    si tu met MyPanel.setVisible(false) tu auras un problème lors ce que tu veux le faire apparaître, il sera petit, partiellement visible ou quelque chose comme ça, je te recommande d´utiliser un JXPanel (de la bibliothèque swingx.jar) au lieu d´un JPanel, car JXPanel possede un proprièté alpha, et tu peux l´exploiter ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    myPanel.setAlpha(0.0f); //comme ça ton panel est invisible.
    en ce qui concèrne le problème de tes events, procede comme suite:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    maTable.addMouseListener(new MouseAdapter() {
        @Override
        public void mouseClicked(MouseEvent e) {
            Object obj = table.getValueAt(table.getSelectedRow(), 0); // je suppose ici que la première colonne contienne la clé primaire
            String data = obj.toString();
            setId(new Integer(data));
            myPanel.setAlpha(1.0f); // rendre le panel visible
        }
    });
    il faut invoquer, le listener sur la table qui est la source de l´ évènement, et non plus sur le scrollPane.

    cordialement

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    47
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 47
    Par défaut
    merci beaucoup pour ton aide

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

Discussions similaires

  1. Créer, retoucher, installer des polices sous debian
    Par Thrystan dans le forum Debian
    Réponses: 2
    Dernier message: 29/06/2005, 22h44
  2. Problème d'installation des extensions serveur
    Par jacma dans le forum Serveurs (Apache, IIS,...)
    Réponses: 2
    Dernier message: 27/09/2004, 10h03
  3. Problème d'install des drivers NVIDIA
    Par Blowih dans le forum Matériel
    Réponses: 4
    Dernier message: 14/08/2004, 20h16
  4. Stratégie d'installation des fixes pour windows 2000/2003
    Par bill4134 dans le forum Autres Logiciels
    Réponses: 20
    Dernier message: 07/07/2004, 16h04
  5. Réponses: 1
    Dernier message: 26/01/2003, 15h13

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