Bonjour, je cherche à bloquer la taille de la fenêtre de mon application à 800x600 (minimum, pas maxi!) j'ai essayé pas mal de setMinimumSize, mais rien de concluant jusque là.
Que faire?
Merki!
Bonjour, je cherche à bloquer la taille de la fenêtre de mon application à 800x600 (minimum, pas maxi!) j'ai essayé pas mal de setMinimumSize, mais rien de concluant jusque là.
Que faire?
Merki!
T'es sûr? parce que j'avais vu un exemple avec un bouton dans une fenêtre, et il était impossible de descendre la taille de la fenêtre sous celle du bouton.
Ca doit être possible de se débrouiller avec un ComponentListener et sa méthode componentResized.
Essaie de faire un truc de ce style :
Affecte une taille minimum à ta JFrame avec setMinimumSize.
Et ajoute-lui un écouteur de type ComponentListener de cette manière
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 taJFrame.setMinimumSize(new Dimension(800,600));
Ca devrait redimensionner ta fenêtre à la taille voulu automatiquement à la taille voulue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 taJFrame.addComponentListener(new ComponentAdapter(){ public void componentResized(ComponentEvent e){ Component cp =e.getComponent(); if (cp.getSize().width<cp.getMinimumSize().width){ cp.setSize(cp.getMinimumSize().width, cp.getSize().height); } if (cp.getSize().height<cp.getMinimumSize().height){ cp.setSize(cp.getSize().width, cp.getMinimumSize().height); } } });
-"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
-"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".
Pieds d'argile (1996), Terry Pratchett 1948 - 2015
(trad. Patrick Couton)
Pour l'instant je n'arrive pas, mais j'ai retrouvé l'exemple de Sun :
http://java.sun.com/docs/books/tutorial/uiswing/components/example-1dot4/index.html#FrameDemo2
La fenêtre principale a une taille minimale, mais j'arrive pas à savoir comment ils ont fait.
J'ai une piste, dans le code FrameDemo2.java, le simple fait de mettre "JFrame.setDefaultLookAndFeelDecorated(true);" en commentaire ne permet plus de bloquer la taille de la fenêtre. Alors va savoir pourquoi...
Y'a des choses dans java qui sont quand même grave bizarre...
Et sinon tu as essayer le code que j'ai mis?
-"Tout ça me paraît très mal organisé. Je veux déposer une réclamation. Je paye mes impôts, après tout!"
-"JE SUIS LA MORT, PAS LES IMPÔTS! MOI, JE N'ARRIVE QU'UNE FOIS".
Pieds d'argile (1996), Terry Pratchett 1948 - 2015
(trad. Patrick Couton)
Oui j'ai essayé mais seul la ligne que j'ai cité précédemment fonctionne.
Je m'en vais faire un tour dans cette méthode, et je reviens...
Edit : d'ailleurs, il suffit de lancer FrameDemo2, et de tester les fenêtres "LookAndFeelDecorated", et "WindowL&FDecorated" : dans le premier cas le bouton ne disparaît jamais, dans le deuxième cas il peut être masqué en grande partie.
FrameDemo2 peut bloquer la taille de la fenetre car elle utilise justement setDefaultLookAndFeelDecorated(true) qui demande au look and feel de s'occuper du dessin des bordures de la fenetre. En gros, la bordure de la fenetre est dessine DANS la JFrame et non pas dehors. De fait le look and feel doit LUI-MEME implementer la gestion du deplacement de la fenetre mais aussi de son redimensionnement.J'ai une piste, dans le code FrameDemo2.java, le simple fait de mettre "JFrame.setDefaultLookAndFeelDecorated(true);" en commentaire ne permet plus de bloquer la taille de la fenêtre. Alors va savoir pourquoi...
Y'a des choses dans java qui sont quand même grave bizarre...
En pratique cela permet de bloquer tres efficacement la taille de la fenetre puisqu'il suffit d'ignorer les evenements souris si la fenetre a deja une certaine taille. On ne peut faire cela avec des fenetres normales car on recoit un evenement componentResized() APRES que la fenetre a ete retrecie par l'environnemen (i.e. Windows par exemple).
ok merci pour le truc, je connais pas trop bien la gestion des Look&Feel. En ce qui concerne la version 1.6 de java, je préfère attendre la finale.
Edit : en ce qui concerne le scrutage de l'évènement, en fait lors d'un redimensionnement de fenêtre, il y aura un doLayout() effectué après, donc ça marche mais c'est assez crade.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager