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) ?
Excusez-moi encore, je n'avais pas vu que mon message était bourré de fautes. Désolé.
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é.
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é.
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é.
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
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.
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
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.
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);
}
}
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); } }