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

Agents de placement/Fenêtres Java Discussion :

[JFrame] origine de la Frame.


Sujet :

Agents de placement/Fenêtres Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 24
    Par défaut [JFrame] origine de la Frame.
    Bonsoir ou plutot bonjour (vu l' heure),

    Voila plus d' un an que je fais du Java (j' ai appris ce language en cours l' année passée, mais on a pas vu les interfaces graphiques).

    Je viens de me mettre aux interfaces graphiques, et je suis face a un problème.
    Je suis en train de faire un petit démineur pour m' amuser. Voici comment je procède :

    J' ai un tableau 2dimensions dont chaque élément contient une référence vers un JLabel qui contient ma cellule (une image 17px X 17px).

    Je récupère la position du curseur et je divise par 17 (taille d une cellule) le x et le y pour avoir l' element du tableau et donc le JLabel sur lequel le joueur a cliqué.
    Mais le problème est que losque je fais un getX() et getY() (de MouseEvent) cela comprend également le bord et la barre titre de la frame. Or selon les systemes d' exploitations les bords et barre de titre change de taille. Donc a priori je ne connais pas a l' avance ces taille pour les soustraire.

    Quelle solution me proposez-vous ?

    D' avance merci.
    A+, And1Hotsauce ;-)

  2. #2
    Membre chevronné Avatar de NeptuS
    Profil pro
    Inscrit en
    Août 2005
    Messages
    392
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Août 2005
    Messages : 392
    Par défaut
    utilise des JButton
    CQFD

  3. #3
    Expert confirmé
    Avatar de Baptiste Wicht
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2005
    Messages
    7 431
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : Suisse

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2005
    Messages : 7 431
    Par défaut
    Ce que tu peut aussi faire, c'est créer une nouvelle classe qui étend JLabel, dans laquelle tu met les méthodes getLine() et getColumn(), et dans le constructeur de cette classe, tu lui passes sa ligne et sa colonne

  4. #4
    Membre Expert
    Avatar de xavlours
    Inscrit en
    Février 2004
    Messages
    1 832
    Détails du profil
    Informations forums :
    Inscription : Février 2004
    Messages : 1 832
    Par défaut
    Tu as 2 solutions :
    - mettre un MouseListener pour chaque JLabel (plutot qu'un pour la JFrame)
    - utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SwingUtilities.getDeepestComponentAt(maJFrame, e.getX(), e.getY())
    "Le bon ni le mauvais ne me feraient de peine si si si je savais que j'en aurais l'étrenne." B.V.
    Non au langage SMS ! Je ne répondrai pas aux questions techniques par MP.
    Eclipse : News, FAQ, Cours, Livres, Blogs.Et moi.

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 24
    Par défaut
    Bonsoir,

    Merci pour vos réponses

    Citation Envoyé par xavlours
    Tu as 2 solutions :
    - mettre un MouseListener pour chaque JLabel (plutot qu'un pour la JFrame)
    - utiliser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SwingUtilities.getDeepestComponentAt(maJFrame, e.getX(), e.getY())
    J' ai opté pour la deuxième solution qui fonctionne a merveille ;-) et j' ai créé une classe JCase qui étend JLabel qui recoit en parametre du constructeur un indicie i et j ainsi une fois que j' ai ma JCase détectée par getDeepestComponentAt je peux jouer mon coup {i, j} et je peux mettre l' image a jour (grace a l' héritage).

    J' ai encore du mal avec le setVisible() et l' affichage (parfois je dois mettre le setVisible() avant d' ajouter un composant, parfois le contraire) mais j' avance ;-)

    A+, And1HotSauce ;-)

  6. #6
    Gfx
    Gfx est déconnecté
    Expert confirmé
    Avatar de Gfx
    Inscrit en
    Mai 2005
    Messages
    1 770
    Détails du profil
    Informations personnelles :
    Âge : 43

    Informations forums :
    Inscription : Mai 2005
    Messages : 1 770
    Par défaut
    and1hotsauce : getX() et getY() renvoient les coordonnees de la souris en unites relatives au composant sur lequel tu as mis le MouseListener. Ainsi, si tu mets ton listener tu le panneau qui contient tes JLabel tu auras directement les bonnes coordonnees. Tu peux aussi t'interesser de pres a la classe SwingUtilities, mentionnee par xavlours, qui permet notamment d'effectuer des conversions de coordonnees entre les composants (par exemple, etant donne un couple X,Y pour la JFrame, quelles sont les coordonnees par rapport a un label).

  7. #7
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Mars 2006
    Messages
    24
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2006
    Messages : 24
    Par défaut
    Citation Envoyé par Gfx
    getX() et getY() renvoient les coordonnees de la souris en unites relatives au composant sur lequel tu as mis le MouseListener
    Haaaa ok merci ;-)
    Oui en effet le mouseListener je l' ai ajouté a la frame et non au JPanel contenant mes JLabels
    Je regarderai a ca demain alors ;-)

    Merci en tout case ;-)
    Je compte de toute façon m' acheter un livre sur les interfaces graphiques ;-)

    A+, And1HotSauce ;-)

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

Discussions similaires

  1. Difference entre frame et Jframe ? Button et Jbutton etc ?
    Par Archange21 dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 16/03/2008, 22h58
  2. méthode JFrame center frame
    Par Nayila dans le forum Agents de placement/Fenêtres
    Réponses: 1
    Dernier message: 08/02/2008, 21h49
  3. insertion d'un jinternal frame dans une jframe
    Par norkoffire dans le forum Agents de placement/Fenêtres
    Réponses: 2
    Dernier message: 30/05/2007, 18h18
  4. [frames] recharger page origine
    Par scorpking dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 24/07/2006, 12h47
  5. Différence entre Jpanel, JFrame, Frame, Panel
    Par Invité dans le forum Agents de placement/Fenêtres
    Réponses: 11
    Dernier message: 12/06/2006, 22h51

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