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

2D Java Discussion :

Zoom / Dézoom


Sujet :

2D Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Points : 66
    Points
    66
    Par défaut Zoom / Dézoom
    Bonjour,

    j esperais trouver une belle lib. faisant ca toute seule (comme toujours avec java) mais non, pas cette fois ci

    Le besoin est le suivant:

    j'ai un JPanel de grande taille (setPreferredSize(3000,3000)), mit dans un JScollPane.
    On peut donc se 'ballader' dans le JPanel a l'aide des ScrollBar.

    Ce JPanel contient des autres objets qui sont eux meme des JPanel (image en fait).


    Quelqu'un aurait il une idée de comment implémenter celà en java?

    La seule idée qui me vient a l'esprit pour le moment est:

    un int allant de 1 - 4 par exemple pour voir le niveau du zoom.
    Et OnClick sur un bouton Zoom, un resize selon le int déclaré auparavant du JPanel + un parcours de tous les objets dans le JPanel et en faire de meme.

    Une autre idée a proposer mes chers?

  2. #2
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu veux faire quoi exactement ? Ce n'est pas très clair !

    a++

  3. #3
    Rédacteur
    Avatar de eclesia
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    2 108
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 2 108
    Points : 3 203
    Points
    3 203
    Par défaut
    resize
    *glup*

    un panneau de 3000*3000, mais c'est quoi ce travail? tu fais un jeu?

    A mon avis oui, donc je pense qu'il faut mieux passer par les librairies de dessin.
    donc regarde cote dessin et Java2D.
    Systèmes d'Informations Géographiques
    - Projets : Unlicense.science - Apache.SIS

    Pour un monde sans BigBrother IxQuick ni censure RSF et Les moutons

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Points : 66
    Points
    66
    Par défaut
    Bhein en fait j'ai un JPanel donc dans lequel on peut taper d'autres objets (representes en image).

    Ces objets sont du matériel reseau, donc interconnexion entre eux et compagnie.

    J'ai mis un grand JPanel de sorte que l'on puisse se ballader dedans via les ScrollBar.

    Mais je trouve que ca pourrait etre interessant de pouvoir avoir une vue d ensemble du reseau, donc Zoomer , dezoomer.

    En dezoomant par exemple, la taille de mon JPanel va retrecir jusqu a a un moment ne plus proposer de ScrollBar car il remplira l ecran a lui tout seul, sans deborder.

    Ai je ete plus clair?

  5. #5
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bon ça vaut ce que ça vaut, mais voilà mon avis, d'après ce que j'ai compris:

    Je pense que si tu t'orientes sur l'utilisation d'un setSize() (ou d'un dérivé selon le cas où tu te trouves), il faut que tu maitrises la disposition des éléments et leur réaction au redimensionnement. Alors, on a clairement un pb de layout.
    - Si tu utilises un Border, un Flow ou un Box, à mon avis, c'est fichu.
    - Si c'est un Grid, normalement, comme les éléments sont étirés et que toutes les cases ont les mêmes dimensions, ça doit supporter le redimensionnement, mais c'est à tester.
    - Si c'est du GridBagLayout, faut qu'il soit bien fait et que tous les éléments aient le champ fill à BOTH. Mais ça risque d'être super complexe pour garder les proportions.
    - Si y'en a pas (null), t'es fichu aussi

    Donc le mieux, c'est d'utiliser un GridLayout si t'as une structure adaptée ou de faire ton propre Layout.

  6. #6
    Expert éminent sénior
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Tu peux peut-être regardé ceci : http://weblogs.java.net/blog/alexfro...sformer_t.html
    (lance la démo Java Web Start).

    Je pense que cela pourrait t'être utile

    a++

  7. #7
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    terrible tout ça.
    "Le calendrier, c'est la bureaucratie du temps." Quino

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Points : 66
    Points
    66
    Par défaut
    Wow, tout bon, v voir ca de plus pres.
    Bien aimable

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Points : 66
    Points
    66
    Par défaut
    MMmm ... ou c est moi qui suis bête, ou c est masta complexe et je pige rien

    Bon , apres avoir matté un peu, j ai donc récuperer le .jar contenant toute la lib, mais j'en suis là c est tout... Dans son blog il parle d' un JXTransformer ... Mais ca n existe pas ...

    Si quelqu un réussit a faire qque chose ... :p

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Points : 66
    Points
    66
    Par défaut
    Bon, apres avoir vu le code de l'appli de démo, j'ai testé.

    A premiere vue, malheureusement, le zoom n'est pas faisable avec des JPanel en layout null ... Si quelqu un a une idée

  11. #11
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Bah comme je l'ai dit, tu peux faire ton propre Layout, si le GridLayout n'est pas adapté.

    Sinon, y'a peut être une autre option, mais je sais pas si ça marche, ni si c'est très optimisé. Tu pourrais garder ton JPanel original, à sa vrai taille, mais pas visible et tu t'en sers de référence. En gros, tu calcules la position et la taille de la partie qui doit être visible, tu en capture l'image sur la référence et tu l'affiches dans ton JPanel visible, avec l'image adaptée.
    Dis-le si j'ai pas été clair

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Points : 66
    Points
    66
    Par défaut
    quel chipotage ... alors que JXTransformer marche du tonnerre

    J'ai besoin obligatoirement d'un layout null car on peut mettre les pictures n importe où dans le JPanel (en fait c est une surface de dessins en gros).
    Donc a part null, rien d'autre d'adapter.

    A voir , mais dommage

    ps: peut etre y a t il moyen d utiliser JXTransformer avec JPanel en null mais je trouve pas comment en tout cas

  13. #13
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Je vais te paraitre insistant, mais si tu fait ton propre layout, tu pourras très bien les placer où tu veux!

  14. #14
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Points : 66
    Points
    66
    Par défaut
    Qu' entend tu par faire mon propre layout?
    Et toute facon ca me posera le meme probleme j'imagine pour la gestion de JXTransformer?

    Dis m'en + que je vois plus clair dans ta proposition

    Merci

  15. #15
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Alors, voilà ce qu'est faire ton propre layout:
    - tu fais une classe qui implémente l'interface LayoutManager,
    - Ensuite, tu t'en sers comme d'un layout normal (f.getContentPane().add(new MonLayout())

    De souvenir, les méthodes les plus importantes sont:
    - layoutContainer : dans laquelle tu dimensionnes et place les objets (appels de setSize() et setLocation() sur les Component du Container). C'est là que tu feras tout tes calculs.
    - addLayoutComponent : dans laquelle tu enregistreras les contraintes associées à chaque Component.

    Il me semble que :
    - addLayoutComponent est appelée quand tu ajoute un Component avec un attribut associé (= container.add(component, qqchose))
    - removeLayoutComponent, tu devineras
    - layoutContainer est appelée à chaque fois que la fenêtre doit ête redessinée (redimensionnement, etc...)
    - preferredLayoutSize est appelée sur un pack().

    Si tu veux gérer un système de contraintes, tu peux implémenter LayoutManager2 qui permet de récupérer un Object sur le add, au lieu d'un String.

    Donc dans l'idée, avec ton layout, tu pourrais faire qqchose du genre container.add(component, point), où point serait les coordonnées de ton objet sur ton Panel à l'échelle 1.

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Février 2006
    Messages
    238
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 238
    Points : 267
    Points
    267
    Par défaut
    Salut,

    alors j'ai pas tout lu, mais deja pour faire un zoom, tu redéfini ton paint de ton composant, tu cast ton Graphics en Graphics2D et tu as une belle méthode scale(double, double) qui permet de zoomer (largeur et hauteur).

    Ensuite j'ai pas trop compris ce que tu voulais faire non plus (lol la je suis très fatigué c'est peut-être pour ça... ) bref sinon il y a une librairie qui permet de faire des schéma et tout ca : GEF...cette librairie permet de faire des schémas avec connections (j'ai lu ce mot dans un de tes messages lol), enfin regarde si ca peux t'aider...
    voilà j'espère que je suis pas complètement à cote de ce que tu cherches à faire lol...

    alle ++ bonne chance a toi

  17. #17
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Points : 66
    Points
    66
    Par défaut
    je vais regarder apres tout ca. Merci a vous tous

  18. #18
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Points : 66
    Points
    66
    Par défaut
    /me nage ...

  19. #19
    Membre éprouvé
    Inscrit en
    Mars 2006
    Messages
    848
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Mars 2006
    Messages : 848
    Points : 1 078
    Points
    1 078
    Par défaut
    Qu'est-ce que tu essaies de faire?
    Faut que l'on sache quelle solution tu as adopté pour essayer de t'aider

  20. #20
    Membre du Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    193
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2006
    Messages : 193
    Points : 66
    Points
    66
    Par défaut
    bah j'ai mille probleme, avec le drag and drop, etc etc .... petage de plomb ici

    J'ai un JPanel dans lequel je peux mettre des images.

    Le but etant de pouvoir ( a l aide d un curseur par exemple) zoomer dezoomer l entiereté des images dans le Panel. J avais trouvé une lib qui faisait ca (JXTransformer) mais quand j essaie de l adapter a mon code, rien ne va plus

Discussions similaires

  1. [CSS 3] Mise en page en zoom/dézoom
    Par oieretxe dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 06/10/2014, 21h54
  2. Effet zoom / dézoom
    Par whoaloic dans le forum Mise en page CSS
    Réponses: 5
    Dernier message: 07/07/2014, 09h14
  3. Zoom/dézoom des items d'un listbox
    Par yonpo dans le forum Windows Presentation Foundation
    Réponses: 5
    Dernier message: 20/12/2010, 12h15
  4. zoom et dézoom dans un JXImageView
    Par genamiga dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 02/06/2009, 10h14
  5. URGENT : Zoom et changement de repère
    Par poca10 dans le forum MFC
    Réponses: 5
    Dernier message: 28/05/2002, 13h32

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