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

 Java Discussion :

Souris et JPanel


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut Souris et JPanel
    Bonjour,

    J'aimerai , dans le cadre d'un projet, pouvoir déplacer des JPanels,
    placés dans un tableau3x3 grille[i][j] (i et j indice du JLabel du milieu).
    Je voudrais savoir comment fonctionne un MouseDragged pour
    pouvoir en déplacant un JLabel sur un autre il y ai échange, ou un MouseClicked en cliquant sur le JLabel1 que l'on veut déplacer
    puis un second clique sur le JLabel2 remplacé par le 1.
    Pour le mouseDragged, je pense qu'il faut que d'abord je repère la position
    avec mais comment faire pour savoir que c'est l'image en [i-1][j] par exemple?

    Merci d'avance

  2. #2
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 28
    Par défaut
    Tu veux savoir sur lequel des composant de ton tableau tu a cliqué c'est bien ça?

    Ce que je propose:
    -Parcours de ton tableau à deux dimension
    -Verifie si la coordonnée X de ta souris est dans le composant
    -Verifie si la coordonnée Y de ta souris est dans le composant
    - Si ces deux conditionnelles sont réalisé alors ta souris est sur le composant

    Un petit 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
     
    MouseEvent e;
    Component grille[][];//tableau de composant possédant une position x et une position y dans ta fenetre
     
    /* Parcours de ton tableau */
    for(int i=0; i<grille.length; i++){
         for(int j=0; i<grille[i].length; j++){
                /* Si la position en X de ta souris se trouve dans la position en X de ton composant */
                if(grille[i][j].getX()>=e.getX() && grille[i][j].getX()+grille[i][j]largeur<=e.getX()){
                      if(grille[i][j].getY()>=e.getY() && grille[i][j].getY()+grille[i][j].hauteur<=e.getY()){
                              //bingo: c'est le bon composant !!!
                       }
                }
          }
    }

    J'éspére avoir bien compris ta question
    Bonne chance !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut
    helitik, c'est exactement ça, a ceci près que je ne suis pas sur de comprendre le : est ce que c'est la largeur total de la grille? Si oui on ne devrait pas utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    grille[i][j].HORIZONTAL
    ?

    et puis je ne vois pas après comment on pourrai enregistré l'image selectionnée pour, en cliquant sur une autre image, on puisse les 'échanger' avec par exemple une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    public void move(JLabel a , JLabel b) 
     
     
     {
    	 Icon img = a.getIcon(); //récupère l'image contenue sur le jLabel a, on l'enregistre
    	 a.setIcon(b.getIcon()); //ensuite on peut remplacer l'image de a, par l'image de b
    	 b.setIcon(img); //remplace l'image de b par l'image de a (qu'on avait sauvergardée)
     }

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 28
    Par défaut
    le c'est la largeur de ton image.
    Le bout de code que je t'ai proposé permet juste de savoir si la souris est dans le composant

    on puisse les 'échanger'
    Pour échanger les images, il te suffit de remplacer les coordonnées de l'une par les coordonnées de l'autre, non?

    Je ne suis pas sur de comprendre ton probléme.

    Tu possédes deux images dans un JPanel et tu voudrais qu'en cliquant sur l'une, les images s'interchangent ? C'est ca?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2009
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 8
    Par défaut
    ba en fait j'ai neuf images qui sont dans neuf JLabel que j'ai placé dans un tableau 3x3 genre grille[i][j]

    le truc ce serait que quand je clique sur une des images, je puisse en cliquant sur une autre image, intervertir les deux images, d'où le problème de savoir quelle image j'ai cliqué. ET cela se ferait dans un mouseClicked

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Décembre 2008
    Messages
    28
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2008
    Messages : 28
    Par défaut
    Pourquoi les mettre dans un JLabel?
    Peut être en les mettant dans un JPanel qui posséderait un GridLayout

    GridLayout est un layout permettant de placer les composants comme dans un tableau.
    Regarde la javadoc: http://java.sun.com/j2se/1.4.2/docs/...ridLayout.html

    Ou l'autre solution afficher le tableau (grille[][]) dans le paintComponent de ton JPanel.

    redit moi ce que tu prend comme solution.
    Ps: persos moi je prendrai la 2e solution. Aprés faut voir le reste de ton projet...

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

Discussions similaires

  1. Souris et JPanel
    Par thithib112 dans le forum Débuter
    Réponses: 0
    Dernier message: 22/04/2009, 15h10
  2. Evenements souris sur JPanel
    Par nemo_str dans le forum Agents de placement/Fenêtres
    Réponses: 7
    Dernier message: 07/05/2008, 15h35
  3. Déplacement avec la souris dans un JScrollPane/JPanel
    Par deadstar62 dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 27/04/2007, 17h10
  4. Redimentionner un JPanel avec la souris
    Par soad dans le forum AWT/Swing
    Réponses: 7
    Dernier message: 03/04/2006, 12h36
  5. [JPanel] Redimensionnable à la souris
    Par komando dans le forum Agents de placement/Fenêtres
    Réponses: 4
    Dernier message: 10/06/2005, 17h19

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