Bonjour
Je voudrais connaitre la taille d'une JFrame pendant le resize (et non pas après)... je ne peux donc pas utiliser componentResized :? :?
Connaissez-vous un évenement style "onResize" ?
Version imprimable
Bonjour
Je voudrais connaitre la taille d'une JFrame pendant le resize (et non pas après)... je ne peux donc pas utiliser componentResized :? :?
Connaissez-vous un évenement style "onResize" ?
bonjour
As tu essayé un WindowStateListener
http://java.sun.com/j2se/1.5.0/docs/...eListener.html
tu implémente ensuite ton code dans le corps de la méthode :
Code:
1
2
3 windowStateChanged(WindowEvent e){ //.... }
Oui, j'ai essayé et ça ne fonctionne pas... Je suis vraiment embêté car je n'ai pas beaucoup d'idées...
Bonjour,
Peux-tu préciser un peu plus ce que tu entends par "taille d'une JFrame pendant le resize" ?
Nicolas
montre nous ton code aussi, ça sera plus facile à comprendre.
vas faire un tour du coté des tutoriaux du site et de ceux de Sun pour les idées :p.
tu as implémenter ton WindowStateListener, mais as tu ajouter le listener à la liste de "diffusion" de ta fenêtre?
Code:
1
2
3
4
5 maJframeAMoi.addWindowStateListener( new WindowStateListener() { public void windowStateChanged(WindowEvent e){ System.out.println("taille: "+maJframeAmoi.getSize()); } });
Prenons un exemple: afficher la taille de la fenetre dans un JLabel (ou comme titre de la fenetre, peu importe) pendant le resize...
Il y a bien le paint() qui me vient à l'esprit mais j'aurais voulu qqch de plus précis... Et en plus j'ai l'impression que le paint() est appelé uniquement quand j'agrandis la fênetre...
Le bout de code ci-dessous pour afficher après le resize.
Pour afficher pendant, je ne vois pas pour l'instant avec les listeners.
Tu peux toujours créer un Thread qui vérifie toutes les x millisecondes la taille de la fenêtre, et agit en cas de changement.
Nicolas
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 import java.awt.event.ComponentAdapter; import java.awt.event.ComponentEvent; import javax.swing.JFrame; public class TestReSize { public static void main(String[] args) { final JFrame frame = new JFrame(); frame.setSize(300,300); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.addComponentListener(new ComponentAdapter() { public void componentResized(ComponentEvent e){ System.out.println("nouvelle taille : "+frame.getSize()); } }); frame.setVisible(true); } }
Merci, mais là est le problème, je veux bien afficher pendant le resize :roll: :lol: :lol:
Je vais continuer à chercher...
Pouvons-nous te demander dans quel but tu cherches la taille de la JFrame pendant le resize ?
C'est une demande de mon client, c'est dans le cahier de charges et bêtement j'ai cru que ça allait être très facile à faire...
Bonjour,
En y réfléchissant, je me dis qu'il existe un problème de fond derrière le suivi de reSize(). Quand l'utilisateur modifie la taille de la fenêtre, le mouvement est "continu". Le logiciel ne peut pas suivre et doit donc définir une fréquence d'acquisition des informations.
D'où les deux exemple ci-dessous, l'un avec minuteur (Timer), l'autre avec un Thread, tous deux cadencés à 400 millisecondes.
1. Exemple avec Timer
2. Exemple avec ThreadCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38 // suivi de la taille d'une JFrame pendant resize // http://www.developpez.net/forums/showthread.php?p=1295394 // Nicolas_75, 26 août 2006 // exemple avec Timer // appeler le fichier Exemple057_ReSizeFollowUpWithTimer.java import java.awt.Dimension; import java.util.Timer; import java.util.TimerTask; import javax.swing.JFrame; public class Exemple057_ReSizeFollowUpWithTimer extends JFrame { Dimension oldDimension; Dimension currentDimension = this.getSize(); public Exemple057_ReSizeFollowUpWithTimer() { this.setSize(300,300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Timer minuteur = new Timer(); TimerTask tache = new TimerTask() { // classe interne : public void run() { oldDimension = currentDimension; currentDimension = Exemple057_ReSizeFollowUpWithTimer.this.getSize(); if (!currentDimension.equals(oldDimension)) { System.out.println("Nouvelle taille : "+currentDimension); } } }; minuteur.schedule(tache, 0, 400); // toutes les 400 millisecondes } public static void main(String[] args) { Exemple057_ReSizeFollowUpWithTimer myFrame = new Exemple057_ReSizeFollowUpWithTimer(); myFrame.setVisible(true); } }
NicolasCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 // suivi de la taille d'une JFrame pendant resize // http://www.developpez.net/forums/showthread.php?p=1295394 // Nicolas_75, 26 août 2006 // exemple avec Thread // appeler le fichier Exemple058_ReSizeFollowUpWithThread.java import java.awt.Dimension; import javax.swing.JFrame; public class Exemple058_ReSizeFollowUpWithThread extends JFrame implements Runnable { Dimension oldDimension; Dimension currentDimension = this.getSize(); public Exemple058_ReSizeFollowUpWithThread() { this.setSize(300,300); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); new Thread(this).start(); } public void run() { while (true) { oldDimension = currentDimension; currentDimension = Exemple058_ReSizeFollowUpWithThread.this.getSize(); if (!currentDimension.equals(oldDimension)) { System.out.println("Nouvelle taille : "+currentDimension); } try { Thread.sleep(400); // 400 millisecondes } catch (Exception e) { e.printStackTrace(); } } } public static void main(String[] args) { Exemple058_ReSizeFollowUpWithThread myFrame = new Exemple058_ReSizeFollowUpWithThread(); myFrame.setVisible(true); } }