Merci d'avance.
Essaye de surcharger ,dans ton composant, les méthodes de gestion des
dimensions : getPreferredSize(), setMaximumSize(), setMinimumSize,
setSize(), setBounds(), getHeight(), getWidth(), etc...
Soit tu lances une exception si les dimensions sont pas "carrées", soit
tu les reclacules pour que ton composant soit toujours carré.
oui
> tout en autorisant les
> redimensionnemnts de son Conteneur (en l'occurence un JPanel avec un
> GridLayout) ?
est ce à dire que ton composant est de taille fixe et que le conteneur
dans lequel il est varie en taille ?
si oui, il te suffit de passer une Dimension en paramètre de ton
composant et de faire (dans la classe de ton composant) :
this.setSize(cetteDimension);
this.setMinimumSize(cetteDimension);
this.setMaximumSize(cetteDimension);
this.setPreferredSize(cetteDimension);
si par contre ton composant doit se redimensionner en restant carré ....
faudrait toujours passer une dimension en paramètre de ton composant et
connaitre le rapport entre la taille de ton composant et celle de la
fenêtre ... et redimensionner à chaud ...
enfin pour dire que dans ce cas de figure je vois pas bien comment faire.
@++
Pimousse
> si par contre ton composant doit se redimensionner en restant carré ....
Exactement
J'ai essayé ça :
public class Carre extends JPanel{
JComponent contenu ;
Carre (JComponent contenu){
super();
this.contenu=contenu;
}
public void paint(Graphics g) {
int h = getHeight () ;
int l = getWidth () ;
int min =l ;
if (h<l) min = h ;
contenu.setSize(min,min);
contenu.paint(g);
}
}
mais visiblement, ça ne marche pas.