OVH Cloud OVH Cloud

Comment rendre un composant.

5 réponses
Avatar
Alexandre
Bonjour,
Dans un programme que j'écrit, j'ai créé un composant graphique
personalisé (extends JPanel), mais il ne peut s'afficher correctement
que si sa hauteur et sa largeur son identique. Peut-on forcer les
dimensions du composant à être carrées tout en autorisant les
redimensionnemnts de son Conteneur (en l'occurence un JPanel avec un
GridLayout) ?

Merci d'avance.

5 réponses

Avatar
Alexandre
Le sujet était : "Comment rendre un composant CARRE", excusez-moi.
Avatar
Alexandre
Excusez-moi encore, je n'avais pas vu que mon message était bourré de
fautes. Désolé.
Avatar
Christophe M
Alexandre wrote:

Bonjour,
Dans un programme que j'écrit, j'ai créé un composant graphique
personalisé (extends JPanel), mais il ne peut s'afficher correctement
que si sa hauteur et sa largeur son identique. Peut-on forcer les
dimensions du composant à être carrées tout en autorisant les
redimensionnemnts de son Conteneur (en l'occurence un JPanel avec un
GridLayout) ?

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é.

Avatar
Pimousse
Peut-on forcer les
dimensions du composant à être carrées


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

Avatar
Alexandre
Pimousse wrote:

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.