Bonjour,
J'ai créé un JFrame redimensionnable, mais j'aimerais lui imposer une taille minimum. En effet, lorsque je lance le soft, le fenêtre peut se réduire à un truc vraiment horrible !
Comment faire ?
Merci.
Bonjour,
J'ai créé un JFrame redimensionnable, mais j'aimerais lui imposer une taille minimum. En effet, lorsque je lance le soft, le fenêtre peut se réduire à un truc vraiment horrible !
Comment faire ?
Merci.
Utilise la fonction getMinimumSize...
Je débute en java, mais moi j'aurai fais comme cela
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 JFrame jf= new JFrame ("test") jf.getMinimumSize(new Dimension(largeur, hauteur));
Voila @+
Euh, plutôt setMinimumSize(dimension)Envoyé par bucheron67
Mdr ça semble si évident...
Mais en fait les méthodes JFrame.getMinimumSize(new Dimension(int width, int height)) et JFrame.setMinimumSize(idem) n'existent pas !
Je viens de vérifier sous Eclipse. (en même temps, c'était un peu évident pour la première
Seul setMaximizedBounds(...) concerne les bornes pour la taille d'un JFrame.
En fait, j'ai déjà essayé d'imposer des tailles minimum pour les JPanel et les Component du JFrame, mais rien n'y fait : en réduisant la fenêtre au maximum (avec la souris), j'obtiens ça : (cf PJ)
Pas très joli...
Des idées ? (je viens de penser à un setLayout(...), mais je suis po sûr)
Euh, chez moi, j'ai la méthode setMinimumSize quand je fais this. sur une classe étendant JFRame...
Sinon une autre solution, tu ajoute un windowListener sur ta fenetre et à chaque redimenssionnement de l'écran, tu vérifies que la taille ne descende pas en dessous du seuil et si c'est le cas, tu redimensionne toi-même la fenetre
évident????Envoyé par Dagnir
La documentation officielle de Java, c'est la Javadoc... pas Eclipse...
JFrame étend la classe Component, qui possède bien les deux méthodes...
Euh... c'est pas le petit triangle hachuré en bas à droite de la fenêtre qui bloque? Tu n'as pas un composant dans ta fenêtre qui a une taille mini plus grande que 0?Envoyé par Dagnir
Envoyé par wichtounet
Ben c strange ça quand même : Eclipse ne me propose pas du tout cette méthode...
En fait, si je tappe this.setMinimumSize(new Dimension(int, int)), il me sort que la méthode n'existe pas, et me propose plutôt un setSize(...).
Pourtant j'ai bien fait un import javax.swing.JFrame et ma classe étend bien JFrame...
Sinon, j'aimerais bien éviter la solution du WindowListener...
Tu as quelle version de java ?
Nan plegat c'est po le triangle qui me gêne (heureusement qu'il est là : ça me permet le redimensionnement de la fenêtre justement).
Le truc qui m'embête c'est que la fenêtre se réduit "trop".
J'aimerais lui définir une taille minimum pour que l'interface soit toujours accessible.
D'ailleurs quand je force l'exécution en ayant mis un this.setMinimumSize(new Dimension(50, 50)), il me sort une exception :
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
The method setMinimuSize(Dimension) is undefined for the type FenetreTrad
Je vois po où je me suis gouré...
à mon avis c'est un problème d'import.
As-tu importé la classe java.awt.Component ?
Salut,
Il suffit de regarder dans la doc officiel pour comprendre : la méthode setMinimumSize() pour JFrame et Component n'est apparut que dans Java 5.0, contrairement à JComponent qui possède cette méthode depuis "toujours" (c-a-d depuis l'intégration de Swing dans java 1.2...).Envoyé par Dagnir
Par contre le setMinimumSize() sur les fenêtre ne fonctionne pas forcément si on utilise les décoration du système... Il faut utiliser la décoration du lookandfeel :
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 Toolkit.getDefaultToolkit().setDynamicLayout(true); JFrame.setDefaultLookAndFeelDecorated(true); final JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setSize(400,400); frame.setMinimumSize(new Dimension(180,180)); frame.setLocationRelativeTo(null); SwingUtilities.invokeLater(new Runnable() { public void run() { frame.setVisible(true); } });Il n'y a pas d'autre choix...Envoyé par Dagnir
a++
Bon en effet, apparemment c'était ma version de Java qui merdait (thx wichtounet) : je viens de me mettre sur la JVM 1.5.0 (avant Eclipse compilait sur la 1.4.2).Envoyé par wichtounet
Donc maintenant le setMinimumSize(Dimension(...)) est accepté à la compilation, mais ça ne change rien : je peux toujours réduire la fenêtre à un truc qui doit faire 50 x 10 pixels (cf plus haut).
Pour info, voici la liste des import de la classe :
import java.awt.Color;
import java.awt.Container;
import java.awt.Component;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;
import java.io.IOException;
import java.io.RandomAccessFile;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPopupMenu;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.border.LineBorder;
il me semble que la seule solution est de mettre un WindowListener et si la taille de la fenetre est inférieure à une taille limite, alors tu affectes cette taille limite à la fenêtre.
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