Bonjour,
J'ai largement remanié un code de bureau étendu que j'ai trouvé sur Internet.
Mon problème est le suivant.
Mon bureau étendu est un JScrollPane, le plan de travail du bureau est un JDesktopPane. Le but est de pouvoir utiliser les JScrollbar pour voir les fenêtres internes qui seraient en dehors de l'écran. Jusque là ça marche. Je veux maintenant quand je rajoute une fenêtre interne sur le bureau, redimensionner celui-ci et repositionner la "vue" pour qu'elle soit centrée sur la nouvelle fenêtre (sauf cas pathologique sur les bord du plan de travail).
J'ai donc une méthode du bureau ajouteUneFenetre qui appelle la méthode équivalente de la classe PlanTravail. Une fois placée la fenêtre doit pour voir redimensionner le bureau et déplacer la vue pour que la fenêtre soir visible et on ne doit pas pouvoir ajouter une nouvelle fenêtre tant que ces actions ne sont pas terminée. Comment utiliser Synchronized ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 public class Bureau extends JScrollPane { .../... private PlanTravail plan; .../... //cette méthode ne doit pas être appelée tant que le redimensionnement //est en cours. public void ajouteUneFenetre(Fenetre f) { this.plan.ajouteUneFenetre(f); redimensionnerBureauEtCentrerVue(f); } public void redimensionnerBureauEtCentrerVue(Fenetre f) { SwingUtilities.invokeLater(new Runnable() { public void run() { //redimensionne //centre } } } }
Partager