Bonsoir,
Si on fait (testé en java 6, java 8, avec Windows 7, 10 et GNOME 2.28.2) un truc tout basique :
Le minimumSize marche très bien mais je maximumSize est sans effet.
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 import java.awt.Dimension; import java.awt.Frame; public class Launch extends Frame { public Launch() { setMinimumSize(new Dimension(100, 100)); setMaximumSize(new Dimension(800, 600)); setSize(400, 400); setVisible(true); } public static void main(String[] args) { new Launch(); } }
C’est connu, voire http://bugs.sun.com/bugdatabase/view...bug_id=6464548, mais pour ce que je comprends le non fonctionnement de setMaximumSize n’est pas systématique, il y a des cas où ça marche.
Par ailleurs, quand on essaye de mettre des points d’arrêt, on voit que l’on ne passe pas dans les fonctions setBounds/reshape de component au moment du resize (mais on y passe au démarrage 2 fois, à l’appel du setMinimuSize et à l’appel du setSize, je vous passe les arbres d’appel).
Si on rajoute un élément à la fenêtre, mettons un label, et qu’on retaille la fenêtre elle change de dimension puis on s’arrête dans reshape pour le label, mais pas pour la fenêtre.
Si je mets un point d’arrêt dans BorderLayout.layoutContainer, j’y passe (via component.dispatchEventImpl) mais :
- Après que ma fenêtre ait-été effectivement redimensionnée
- Sans rien y faire
Donc, 2 questions :
- Qui gère pour de vrai mon redimensionnement, traite mes évènements ? (Visiblement pas trop component<|-- Container <|--Windows<|--Frame)
- Comment faire, autrement, pour imposer une taille max (question a priori étroitement liée à la première) ?
Bonne soirée,
Gaillac
Partager