Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

JPanel, JLabel, Graphics

2 réponses
Avatar
Jean-Philippe Martin
Bonjour a tous,

ceci est mon premier post ici, donc vous vous doutez bien que j'ai une
question ;o)

Alors voici la mise en contexte...

Je souhaite develepper un editeur graphique. Celui ci peut etre vu comme
deux fentetre, une composée d'un ensemble de bouton JToggleButton (ayant
chacun une image) et une autre vide sensée recevoir le dessin (appelée ici
ZD - zone de dessin).
Si on selectionne un JToggleButton et puis que l'on click sur la ZD alors
l'image représentée sur le JToggleButton s'affiche sur la ZD a l'endroit que
l'on a clické.
Pour le moment j'arrive a faire ceci sans trop de probleme. Je représente
les images dans la ZD par des JLabel car je veux pouvoir faire des drag and
drop pour changer la position de l'image. Ca marche aussi.

La où j'ai des problemes:

je veux ajouter un JToggleButton spécial qui ne contient pas d'image et qui
une fois selectionné me demande de clicker sur deux image (JLabel) deja
dessinées dans la ZD. Si deux image ont bien été clické alors on trace une
ligne entre ces deux JLabel par la méthode Graphic.drawLine(coordImage1,
coordImage2).

J'arrive à sauver les positions des différents JLabel, à sauver les
différents liens que j'ai demandé, à retrouver les origines et destination
des liens. Mais je n'arrive pas a les afficher dans la ZD. Pas de probleme
pour les images, juste pour les liens.

Si je dessine une ligne quelconque dans la ZD (j'ai fait ca pour voir si ca
marchait) alors elle apparait (ca marche ;o) )
mais si j'ai le malheur d'ajouter un dessin alors le ligne s'en va ou elle
est coupée etc...

:o(

Des idées ? Ce prog est assez important pour moi :o(

Merci d'avance, j'espere avoir été clair.

2 réponses

Avatar
Bruno Causse
dans l'article 403233c5$0$13256$, Jean-Philippe
Martin à a écrit le 17/02/2004 16:31 :

Bonjour a tous,


bonjour,

J'arrive à sauver les positions des différents JLabel, à sauver les
différents liens que j'ai demandé, à retrouver les origines et destination
des liens. Mais je n'arrive pas a les afficher dans la ZD. Pas de probleme
pour les images, juste pour les liens.


les redessines tu a chaque mise a jour de la fenetre?

Si je dessine une ligne quelconque dans la ZD (j'ai fait ca pour voir si ca
marchait) alors elle apparait (ca marche ;o) )
mais si j'ai le malheur d'ajouter un dessin alors le ligne s'en va ou elle
est coupée etc...


je pense que non, le rafraichissement de tes composants est "automatique",
mais pas de tes lignes.


@+

Avatar
Jean-Philippe Martin
J'arrive à sauver les positions des différents JLabel, à sauver les
différents liens que j'ai demandé, à retrouver les origines et
destination


des liens. Mais je n'arrive pas a les afficher dans la ZD. Pas de
probleme


pour les images, juste pour les liens.


les redessines tu a chaque mise a jour de la fenetre?


en fait, g une fenetre JFrame ZD dans laquelle j'ai un JPanel
MoveableComponentsContainer qui implemente diverses interfaces pour le drag
and drop. J ai effectué un ZD.setContentPane(MoveableComponentsContainer).

chaque fois que je fais un click dans la ZD et qu'un bouton a été
selectionné alors j'ajoute un MoveableImage (qui est un JLabel) dans le
MoveableComponentsContainer.

J'ai une méthode paint(Graphics g) dans la ZD qui :

1. removeAllComponent du MoveableComponentsContainer
2 . va rechercher tous les dessins deja dessinés
3. fait des addNewDrawing dans le MoveableComponentsContainer autant de
fois que j'ai de dessins et avec les param relatifs au dessin.

--> C'est a ce niveau que a mon avis le dessins du
MoveableComponentsContainer se fait tout seul.

4. va chercher tous les liens
5. les affiches par des lignes entre la source et la destination par un
graphics.drawline

--> on ne voit rien.


Si je dessine une ligne quelconque dans la ZD (j'ai fait ca pour voir si
ca


marchait) alors elle apparait (ca marche ;o) )
mais si j'ai le malheur d'ajouter un dessin alors le ligne s'en va ou
elle


est coupée etc...


je pense que non, le rafraichissement de tes composants est "automatique",
mais pas de tes lignes.


@+