Bonjour,
Afin de mieux intégrer une barre de menu dans mon application, j'ai décidé d'étendre les classes JMenuBar et JMenuItem afin de les redessiner, et que leur rendu graphique soit plus proche du thème graphique de mon programme.
Je n'ai aucun problème avec JMenuBar, le rendu est bon et j'ai ce que je veux.
Le problème se pose avec JMenuItem, qui est assez récalcitrant
Voici mon code :
Résultat dans pièce jointe. C'est bien ce que je veux, mais j'ai envie de virer les bords blancs. Donc, j'ai essayé setBorderPainted(false), setBorder(null) et même d'étendre la méthode paintBorder(Graphics g) et de la laisser vide, mais à chaque fois, le même résultat (voir deuxième pièce jointe).
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
24
25
26
27
28
29
30
31 protected void paintComponent(Graphics g) { GradientPaint paint = null; if(isArmed()) { paint = new GradientPaint(0.0f, 0.0f, new Color(189, 189, 209), 0.0f, getHeight(), new Color(102, 102, 102)); }else { paint = new GradientPaint(0.0f, 0.0f, new Color(249, 249, 249), 0.0f, getHeight(), new Color(202, 202, 202)); } Graphics2D g2 = (Graphics2D) g; g2.setPaint(paint); g2.fillRect(0, 0, getWidth(), getHeight()); if(isArmed()) { g2.setColor(Color.white); }else { g2.setColor(textColor); } g2.setFont(textFont); FontMetrics fm = g2.getFontMetrics(); g2.drawString(getText(), (getWidth() - fm.stringWidth(getText())) / 2, 12); }
Comme vous pouvez le voir, la hauteur du bord du bas est réduite, mais c'est tout, alors que cela aurait du disparaitre je pense.
Aurais-je loupé quelque chose ?
![]()
Partager