Bonjour,
J aimerais rendre uniquement une drawLine cliquable mais je ne vois pas comment m'y prendre pour que ce soit uniquement la drawLine.
Merci de votre aide .
Bonjour,
J aimerais rendre uniquement une drawLine cliquable mais je ne vois pas comment m'y prendre pour que ce soit uniquement la drawLine.
Merci de votre aide .
Pour chacun de tes dessins, utilise une Shape. (Line2D par exemple implemente l'interface shape comme la plupart des truc de dessins).
Et pour chacun de tes dessins cliquables, tu les ajoutes dans une liste de shape.
Ensuite au moment voulu (clique ou rectangle de selection ou autres), tu teste l'intersection entre la point de click (ou le rectangle) et ta liste de shape. De cette manière tu saurais sur quelle ligne tu as cliqué.
Tu px en plus du shape ajouter une autre informations eventuellement (dans une autre liste ou sous forme d'un objet qui regroupe la shape et l'informations) afin de pouvoir facilement savoir sur quoi tu as cliqué et a quoi il correspond dans ton "modèle".
(Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
N aurais tu pas un exemple puisque sa M a l'air confus..
Désolé je débute en graphique ..
J'ai compris finalement seulement Line2D ne prend pas les int :/
Salut,
Tu peux caster les int en double. Ou alors utiliser la classe Point :
Et si je te dis qu'en plus cette classe Point est la même que celle utilisée pour récupérer le point où on clique avec la souris, tu dois pouvoir imaginer comment on peut dessiner une ligne, ou la sélectionner. Il y a juste 2 petites choses que j'ajouterais à ce qu'a dit @Wax78. La première, c'est que comme il est pas forcément évident de cliquer précisemment sur un point, pour faire la sélection, utiliser un petit rectangle qui entoure le point du clic :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 Point pointDebut = new Point( 10, 10); Point pointArrivee = new Point( 100, 100); Line2D line = new Line2D.Double(pointDebut, pointArrivee);
La seconde, c'est qu'il peut y avoir plusieurs lignes pas loin du point de clic. Il te faut décider d'un moyen d'en choisir une. La plus proche, la première de la liste,... à toi de voir.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Point pointClic = mouseEvent.getPoint(); Rectangle2D rectangle = new Rectangle2D.Double(pointClic.x - 3, pointClic.y-3, 6, 6); // le clic est au mileur d'un carré 6x6 : à toi de voir le réglage et la précision que tu veux pour le clic for( Line2D ligne : lignes ) { // on parcourt la liste de ligne if ( ligne.intersects( rectangle ) { // il y a intersection, donc on est pas loin d'avoir cliquer sur cette ligne } }
Eventuellement, une autre chose, mais peut-être plus complexe pour toi : si tu as beaucoup de lignes, les parcourir à chaque fois peut être très long. Il y a des méthodes pour accèlerer ce genre de chose. L'une d'elle s'appelle le quadtree. Si tu penses en avoir besoin, il y a un tutoriel sur le sujet sur Developpez.
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
J'ai parlé du rectangle Joel D'ailleurs on peut y rajouter encore, est-ce qu'on prends les lignes qui sont totalement incluse dans le rectangles, ou celles qui ont un point inclus.
Sinon pour le quadtree, certes c'est vrai, mais entres nous, faut déjà avoir la dose de truc dessinés.
(Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
L'expression "ça marche pas" ne veut rien dire. Indiquez l'erreur, et/ou les comportements attendus et obtenus, et donnez un Exemple Complet Minimal qui permet de reproduire le problème.
La plupart des réponses à vos questions sont déjà dans les FAQs ou les Tutoriels, ou peut-être dans une autre discussion : utilisez la recherche interne.
Des questions sur Java : consultez le Forum Java. Des questions sur l'EDI Eclipse ou la plateforme Eclipse RCP : consultez le Forum Eclipse.
Une question correctement posée et rédigée et vous aurez plus de chances de réponses adaptées et rapides.
N'oubliez pas de mettre vos extraits de code entre balises CODE (Voir Mode d'emploi de l'éditeur de messages).
Nouveau sur le forum ? Consultez Les Règles du Club.
Bah au pire le click reste un rectangle de dimension de 1 pixel, comme ca ca couvre les 2 cas. Mais un lasso ca je n'avais pas encore pensé (enfin les utilisateurs jusque la ne me l'ont jamais demandés non plus).
(Les "ça ne marche pas", même écrits sans faute(s), vous porteront discrédit ad vitam æternam et malheur pendant 7 ans)
N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager