empiret
Messages postés38Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention13 mars 2006
-
16 août 2005 à 14:12
cs_Dobel
Messages postés333Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention23 novembre 2009
-
20 août 2005 à 18:33
Bonjour,
Comment ajouter une bordure (d'epaisseur 3 par exemple), mais EXTERIEURE?
Suppons qu'on a un jpanel de dimensions 44/44. Je voudrais lui changer sa bordure quand je passe la souris dessus.
Le probleme est que si j'ai des composants a l'interieur et quand y a
la bordure, certains composants cachent la bordure. Donc on risque de
voir la bordure incomplete et c'est pas joli.
J'ai l'impression qu'on construit la bordure de telle facon on voit un jpanel 44/44 et non pas 44+3=47/47
Solutions:
- soit ya une methode d'ajouter une bordure exterieure facilement?
- soit je dois redimensionner mes composants pour laisser la place a la bordure ?
sebus78
Messages postés1Date d'inscriptionmardi 16 août 2005StatutMembreDernière intervention16 août 2005 16 août 2005 à 14:58
Tu peux essayer de redimmensionner tes composants:
setPreferredSize(new Dimension(x,y));
ou les donner une marge par rapport a (haut,gauche,bas,droite)
setInsets( 15,15,15,15) par Exemple.
Quand tu donnes un insets fais gaffe car si tu donnes un ecart a droite au premier composant de la ligne, t'as pas besoin d'en donner un à gauche pour le deuxieme composant.(ecart est deja donné).
Par contre pour utiliser setPreferredSize() et setInsets il faut un layout dde type GridBagLayout()
empiret
Messages postés38Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention13 mars 2006 16 août 2005 à 16:06
Aucun type de bordure ne pourrait resoudre le probleme a mon avis, car tous les types de bordure utilisent le meme principe:
Si on a un jpanel de dimensions 44/44, rien ne deborde, toutes les bordures est dans le cadre 44/44 et rien ne sort du jpanel.
En fait, la bordure est comme la couche de peinture, moi je voudrais peindre de l'exterieur des mures, mais avec tous les types de bordure, meme BevelBorder cela consiste a peindre de l'interieur.
Je dois peut-etre choisir la deuxieme solution avec le changement des dimensions..pfff!
Cela m'oblige de changer les dimensions a chaque fois que la souris
rentre dans le jpanel, ou bien a accepter de voir un peu de blanc entre
le cadre de mon jpanel et ses composants.
empiret
Messages postés38Date d'inscriptionmercredi 6 avril 2005StatutMembreDernière intervention13 mars 2006 19 août 2005 à 14:58
Bonjour,
finalement, y a pas de solution en utilisant les borders.
Tout est fixe et l'epaisseur de la bordure augmente quand la souris est dans mon jpanel.
J'ai diminue la taille (fixe) des composants pour voir la bordure en
entier quand la souris est dans le jpanel(epaisseur 2), quand la souris
est endehors, la bordure a une epaisseur 1, et ya de l'espace de 1
entre les composants et le cadre du jpanel.
Tant pis. Je ne vais pas m'amuser a changer les tailles des composants, c'est lourds et ca peut-etre long.
public void mouseClicked(MouseEvent e) {}
public void mousePressed(MouseEvent e) {}
public void mouseReleased(MouseEvent e) {}
public void mouseEntered(MouseEvent e) {
bordureOn = true;
repaint();
}
public void mouseExited(MouseEvent e) {
bordureOn = false;
repaint();
}
}
Dobel
[Une fois rien, c'est rien; deux fois rien, ce
n'est pas beaucoup, mais pour trois fois rien, on peut déjà s'acheter
quelque chose, et pour pas cher]