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

AWT/Swing Java Discussion :

Redimmensionnement proportionnel ?


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut Redimmensionnement proportionnel ?
    Bonjour,

    j'ai une petite question : comment faudrait-il que je m'y prenne pour pouvoir faire en sorte que le redimmensionnement d'une jframe garde un rapport proportionnel ?


    Merci d'avance.

  2. #2
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Par défaut
    La question est pas très claire.

    Enfin surtout, pourquoi veut tu que la frame reste proportionnelle alors que à priori ce n'est pas le role d'une frame ?

  3. #3
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Tu peux utiliser un listener pour redéfinir la taille une fois le redimensionnement fini :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	frame.addComponentListener(new ComponentAdapter() {
    		@Override
    		public void componentResized(ComponentEvent e) {
    			Component c = e.getComponent();
    			int value = (c.getWidth() + c.getHeight()) / 2;
    			c.setSize(value, value);
    		}
    	});

    Par contre ce n'est pas dynamique mais seulement à la fin du redimensionnement...


    a++

  4. #4
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut
    je veux garder la proportion 71 / 48 = 1,47

    merci adiGuba, je verais demain si çà conviens.

  5. #5
    Membre expérimenté
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 155
    Par défaut
    Tu peux essayer de redéfinir les methodes setSize aussi.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    public setSize(int width,
                        int height)
    {
      int dim=(width+height)/2;
      super.setSize(dim,dim);
    }
    et la même avec une dimension.

    Mais je ne sais pas si ça marche.

  6. #6
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut
    sur la base du code de adiGuba, j'ai essayé çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    public void paint(Graphics g)
                {
            int value = (getWidth() + getHeight()) / 2;
            setSize(value, value);
        }
    et ba c'est pas terrible, en fait la fenêtre bataille avec la souris pour bien dessiner la fenêtre.

    Je me demande s'il ne serait pas possible d'influer sur la position de la souris pour la bloquer sur une trajectoire.

  7. #7
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut
    bon j'ai essayé çà :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    @Override
        public void paint(Graphics g)
        {
            int value = (getWidth() + getHeight()) / 2;
            setSize(value, value);
            Rectangle rc = this.getBounds();
     
            rb.mouseMove((int)(rc.getX() + rc.getHeight()), (int)(rc.getY() + rc.getWidth()));
     
        }
    // rb = new Robot();

    et c'est pas tout à fait çà, en effet la position que mouseMove veux envoyer la souris, serais normalement le pixel le plus en bas à droite de la frame, or la zone de saisie d'une frame n'est pas limitée à 1 pixel, ce qui fait que la frame grandis sans cesse tant que l'on 'tient' cette zone.

    C'est peut être proche de la solution, mais je ne sais pas quels calculs faire pour arriver au bon résultat.

  8. #8
    Membre éclairé
    Homme Profil pro
    Inscrit en
    Juillet 2002
    Messages
    705
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 705
    Par défaut
    je suis étonné par cette question, car en effet je voyais arriver le problème, si tu veux conserver la proportionnalité car tu as des composants dans la Frame qui se tordent c'est au niveau des layouts managers dans la frame qu'il faut jouer.

  9. #9
    Membre éclairé Avatar de BakaOnigiri
    Inscrit en
    Avril 2002
    Messages
    366
    Détails du profil
    Informations forums :
    Inscription : Avril 2002
    Messages : 366
    Par défaut
    ok, donc le contenu de ma fenêtre :

    2 lignes de 4 JSVGCanvas (conteneur de graphique SVG de la librairie Batik), déjà j'ai un problème : j'arrive pas à faire que le canvas redimenssionne le dessin en fonction du layout.

    J'ai donc utilisé un GridLayout, 2 lignes, 4 colonnes, et dans la méthode paint, j'envois un message de zoom aux canvas svg.

    Bon, ok c'est pas terrible, mais çà change pas grand chose, mes dessins doivent garder une certaine proportion, et donc toute la fenêtre aussi, et mes zoom aussi, donc au final je pense prendre la méthode de adiGuba, elle convient assez bien.

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

Discussions similaires

  1. [TForm] Comment interdire le redimmensionnement ?
    Par portu dans le forum Composants VCL
    Réponses: 6
    Dernier message: 08/02/2005, 21h53
  2. [débutant] redimmensionner une ImageIcon
    Par calimero82 dans le forum 2D
    Réponses: 7
    Dernier message: 07/12/2004, 16h13
  3. [VB.NET] Redimensionner une image proportionnelement
    Par Monster77 dans le forum Windows Forms
    Réponses: 3
    Dernier message: 19/10/2004, 13h10
  4. [VB6] [Graphisme] Réduire une image proportionnellement
    Par pepper dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 24/02/2003, 15h49
  5. Taille des champs proportionnelle...
    Par Depteam1 dans le forum Composants VCL
    Réponses: 2
    Dernier message: 09/08/2002, 12h48

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