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.
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.
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 ?
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++
je veux garder la proportion 71 / 48 = 1,47
merci adiGuba, je verais demain si çà conviens.
Tu peux essayer de redéfinir les methodes setSize aussi.
et la même avec une dimension.
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); }
Mais je ne sais pas si ça marche.
sur la base du code de adiGuba, j'ai essayé çà :
et ba c'est pas terrible, en fait la fenêtre bataille avec la souris pour bien dessiner la fenêtre.
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); }
Je me demande s'il ne serait pas possible d'influer sur la position de la souris pour la bloquer sur une trajectoire.
bon j'ai essayé çà :
// rb = new Robot();
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())); }
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.
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.
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.
Partager