Bonjour,
J'aimerais mettre une icone juste devant le texte d'une TitledBorder
Est ce possible ?
Bonjour,
J'aimerais mettre une icone juste devant le texte d'une TitledBorder
Est ce possible ?
A mon goût, les TitledBorders sont un peu trop surchargées graphiquement, j'ai tendance à leur préférer un simple couple JLabel + JSeparator en haut de la section, ce qui à tendance à être un peu plus léger visuellement.
Et accessoirement, le JLabel permet d'ajouter un Icon sans problème.
Si tu tiens à ta TitledBorder avec Icone, il faudra créer une classe héritant de TitledBorder et redénissant la méthode protected paintBorder pour dessiner l'icône.
Pour ceux qui cherche voici la réponse :
Il y a un argument de plus (Container conteneur) qui est le JPanel auquel s'applique la bordure
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
16
17
18
19
20
21
22
23 class TitledBorderIcon extends TitledBorder { private static final long serialVersionUID = -3461054692463181729L; Container conteneur; public TitledBorderIcon(Border border, String title, int titleJustification, int titlePosition, Font titleFont, Color titleColor,Container conteneur) { super(border, " "+title, titleJustification, titlePosition, titleFont, titleColor); this.conteneur=conteneur; // TODO Auto-generated constructor stub } public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) { super.paintBorder(c, g, x, y, width, height); Image img = Toolkit.getDefaultToolkit().getImage("report_loupe16.png"); // Now use the graphics context to draw whatever needed g.drawImage(img, 10, 0, 16, 16, conteneur); } }
Tu n'as pas besoin du conteneur dans le drawImage, un null suffit![]()
Partager