Besoin d'aide en Java, si un gentil développeur pouvait se manifester... ^^

Bonjour,

je débute en Java et je suis sur un projet où je bloque complètement car je ne sais pas du tout quels objets utiliser pour réaliser ce que je souhaite graphiquement.

Je voudrais que l’utilisateur puisse cliquer sur une image et récupérer les coordonnées de ce clic sur l’image pour faire apparaitre un petit icone (ou une petite puce) à cet endroit et que cet élément puisse être nommé par l’utilisateur de telle sorte que s’il reclic dessus plus tard, une sorte de fiche de cet icone avec son nom et un petit texte lui correspondant apparaisse, et s’il en sélectionne un autre qu’il avait placé avant, à l’endroit de la fenêtre réservé à l’affichage de la petite fiche descriptive, s’affiche dans son nom dans la partie nom, sa description dans la partie description, etc.

Bref, je ne sais pas si j’ai été assez clair, c’est pas simple à expliquer et mais j’aimerais terminer ce petit projet assez urgemment car je n’aurais plus du tout le temps après mardi prochain pour ce genre de chose :confused:

Merci beaucoup de votre aide même mineure par avance, que ce soit des noms de fonctions ou objets pouvant m’être utiles, des exemple de codes sources perso ou d’internet pouvant m’aider, ou alors des questions dans le but de m’aider durant une partie de mon projet…
Edité le 03/09/2011 à 17:51

Honnêtement, je n’ai pas trop compris.
Pour les images, tu as BufferedImage mais cela ne te donnera pas le clic.
Pour le reste, tu peux hériter de JComponent, surcharger la méthode paint pour dessiner ton image et aussi gérer les clics.

Après quelques recherches pour trouver un exemple mon projet s’apparenterait fortement au module “Maps” de Google, on a une image en fond (une carte ou autre) et des points avec des coordonnées sur l’image, représentés par des symboles -sur Maps ce sont des sortes d’épingles avec des lettres A, B, C, etc.- et quand on clique dessus (ou au passage de la souris pour Maps) le nom et la description (éventuellement la photo) correspondant au point ciblé apparait !
C’est exactement ce que je veux pour être plus clair.

Merci beaucoup pour ta réponse ça fait vraiment très plaisir de voir qu’on lance pas un appel à l’aide dans le vide ! ^^

Si, maintenant que tout doit être éclairci, tu peux m’en dire davantage, je serait ravi car tu m’as l’air plutôt connaisseur (en comparaison à mon niveau)…

PS: Ton deuxième lien est identique au premier, c’est normal ?
Edité le 03/09/2011 à 23:29

Ce n’est sans doute pas normal non, il voulait vraisemblablement t’aiguiller vers ce lien : download.oracle.com…

L’anglais n’est vraiment pas mon fort donc je n’ai peut-être pas saisi le principal, mais je ne comprends pas bien ce que Jcomponent va me permettre de faire dans mon projet…
Par contre, pour le (double) buffering j’ai vu que c’était pour l’affichage de mon image de fond et qu’elle ne se déforme pas en redimensionnant la fenêtre, ça, c’est ok, je verrai plus tard, c’est moins prioritaire au niveau technique.

Quelqu’un aurait des codes sources d’exemple qui s’apparenteraient à ce que je veux faire ? (je ne suis quand même pas le premier à vouloir faire ça !? Google l’a fait… lol)

PS: Pour les clic je ne sais pas encore trop comment mais je vais devoir utiliser des MouseListener et MouseMotionListener si je ne me trompe pas !?
Edité le 04/09/2011 à 13:39

Oui pour les MouseListener, mais ça ne fonctionne que sur des JComponent, d’où le second lien :slight_smile:

Bon, je commence à désespérer un peu à force d’essayer des choses sans résultat et de ne pas trop savoir où je vais :confused:
Pour mon image de fond je pensais la mettre dans un jpanel, j’ai réussi avec un bout de code trouvé sur internet, mais ça ne m’aide pas à afficher de petites images ou des Jlabel par dessus, à des coordonnées précises, ni à les rendre réactifs aux clics et clics droits…

Il faudrait absolument que je termine tout ça, même de manière basique, pour ce soir (lundi soir) ! J’aime bien finir les choses mais là je le sens mal.

Help me please !

Bon, je n’ai que jusqu’à Dimanche (un peut plus de temps que prévu) pour terminer mon projet (je l’ai un peu simplifier pour avoir plus de chances de réussir).

Je suis toujours bloqué sur la manière d’afficher des petites ImageIcon sur ma grande image affichée en fond d’un panel, et ses petites images devront s’afficher en fonction de coordonnées stockées dans une BDD Mysql (faut que je fasse une connexion avec jdbc)…

Help me please !? Oo
Edité le 07/09/2011 à 14:38

UP !
Si quelqu’un qui sait programmer en java veut bien que je lui fasse un partage d’écran sur skype, je luis montrerai mon code pour voir ce qui ne va pas !?
Parce que je pense être tout prêt du but mais quelque chose qui devrait se produire, ne fait rien (en apparence en tous cas)…

Merci infiniment à la personne qui me répondra !

Je pense que tu cherches ici quelque chose que tu ne trouveras pas.

Ce n’est que mon avis, mais tu devrais sans doute poster davantage d’éléments concrets sur ce thread (j’entends par là : du code) plutôt que d’attendre que quelqu’un veuille bien se connecter à toi sur Skype.

Bon courage en attendant.

Oui, malheureusement je pense aussi, mais poster tout le code en vrac comme ça ici est inconcevable surtout qu’il est assez complexe et sans explication, incompréhensible ! lol

Je vais essayer d’expliquer et j’espère que quelqu’un va pouvoir me donner un exemple de code qui fait ça :
J’ai en base (à laquelle mon code est connectée) plusieurs enregistrement avec un ID, une coordonnée X et une coordonnée Y (entre autres), et je voudrais que mon code affiche une tite image dans mon panel pour chacun de ces enregistrement et aux bonnes coordonnées…

Suis-je clair ? Et avez-vous une idée SVP ?

Merci par avance de m’accorder un peu de votre temps.

Ne me laissez pas sans réponses SVP je vais vite désespérer sinon…

Bref, j’avance : j’ai des erreurs !!! L’origine vient de l’endroit où j’ai créé une classe Open_Connect() pour ouvrir la connexion à la BDD et dans mon Try { j’ai mis ceci qui pose problème :

Class.forname("com.mysql.jdbc.Driver");  //C'est cette ligne qui pose pb à la compilation
this.connect = DriverManager.getConnection("jdbc:mysql://localhost  //etc. ;

Et ça engendre plusieurs erreurs un peu partout où je récupère et utilise mes données (dans le ResultSet etc.) !

J’espère ce coup-ci avoir des réponses qui vont m’être utiles ! :stuck_out_tongue:
Edité le 08/09/2011 à 12:39

Class.forname("com.mysql.jdbc.Driver"); //C'est cette ligne qui pose pb à la compilation

mysql est il bien installé sur ton poste ?

this.connect = DriverManager.getConnection("jdbc:mysql://localhost //etc. ;

cette ligne fonctionne t elle ?

Il y a un espace après localhost, est ce normal ?
Es tu sur du chemin que tu indiques?
Il manque une parenthèse à la fin de la ligne avent le point-virgule. Est ce une erreur de copier coller ?

Non, c’est simplement que je n’avais pas envie de tout recopier, surtout que la deuxième ligne ne pose pas de soucis…
Comme précisé c’est la première qui est la base de mes erreurs de compilation, malgré que mysql soit bien installé et en cours d’exécution (avec xampp, et sur phpmyadmin la base est ok, j’ai vérifiée avec mysql workbench de même).
Donc je ne comprends pas et ça me bloque complètement :confused:
Edité le 08/09/2011 à 13:36

tu as un jar à ajouter,
voir ici : www.commentcamarche.net…

ou sur google avec “java mysql”.

Oh ! Super ! Merci beaucoup, vraiment ! J’ai toujours des erreurs, mais au moins la connexion JDBC fonctionne ^^
Comme j’ai toujours travaillé sur des projets non connectés ou alors déjà créés, je ne savais pas qu’il fallait inclure un Jar pour la connexion.

Bon, je vais encore vous solliciter un peu, il me reste 3 lignes d’erreurs de compilations sur la bonne dizaine d’avant, et j’ai du mal à piger la partie ciblée.

(J’éditerais ce message si après quelques recherches je ne m’en sors pas. Et merci encore à toi Jiheme44.)

Tout fonctionne sauf l’affichage de ce qui est en gras (les ImageIcon dans les JLabel) !!! :confused:
Note : il ne faut pas s’occuper du panel formPanel, les champs de formulaire ne sont reliés à rien, amis je veux les garder tels quels…

Dsl si le code n’est pas top au niveau propreté (surtout que l’indentation disparait avec l’envoi du message sur Clubic), et j’ai laissé tous mes tests en commentaire.

PS: j’oubliais de vous noter ce qui s’affiche dans le console (prouvant que j’obtiens bien mes coordonnées pour placer les petites images)


2
60
40
160
140
60 , 40
160 , 140

rePS: je travaille sous Eclipse, et j’oubliais : Merci par avance à celui ou celle qui trouvera la faille !
Edité le 08/09/2011 à 16:52

y a t il au moins une image qui s’affiche ?

essaie aussi de créer ton label dans la boucle

for (int j = 0; j <= i-1; j++)
{
	JLabel test = new JLabel(new ImageIcon(("C:\\punaise.gif")));
	test.setLocation(nb_POI[j][0],nb_POI[j][1]);
	System.out.println(nb_POI[j][0]+" , "+nb_POI[j][1]);
	imagePanel.add(test);
}

Excuse-moi j’aurais pu envoyer cette capture d’écran : Clique-ici !
Tout devrait être plus clair ainsi, la petite punaise que j’ai fait afficher dans le formulaire du droite devrait apparaitre deux fois sur la carte normalement… Mais ce doit être un problème de superposition impossible, en cherchant j’ai vu que ce n’était possible qu’avec un JLayeredPane mais j’ai passé deux à trois heures à comprendre comme ça marchait et l’essayer de toutes les manières imaginables dans mon code (sauf la bonne peut-être), donc j’en suis toujours au même point. Peut-être ma méthode pour afficher la carte dans un JPanel n’est pas bonne, mais j’ai essayer dans un JLabel et j’ai le même résultat.

Je m’arrache les cheveux sur ce foutu code, HELP ME please ! ^^

peut être que le problème vient de la redéfinition de la méthode paint() de la classe jpanel qui fait ensuite panter l’ajout de japanel plus petit.
1er test : vérifier ce que renvoie la ligne “imagePanel.add(test);”
si elle renvoie null, alors il y a un problème
2eme test : plutot que d’ajouter un jpanel, il faudrait repeindre l’image sur l’image
pour ça, il faut découvrir la clsse Graphics.
la méthode serait de récupérer la classe graphics de ton jpanel de fond qui contient le plan
un truc du genre
jpanel.getGraphics
puis d’y dessiner l’image avec la méthode drawImage ( + pas mal de parametres que je te laisse chercher).

peut être faudra t il ‘refixer’ le graphics dans le jpanel de fond avec une méthode qui devrait vraisemblablement s’appeler setGraphics(…);
voire encore faire un update sur la fenêtre jframe…