Bonjour,
Je viens vous demander aide & conseils ici à propos de deux petites choses..
Pour un 'jeu' ( coder pour apprendre), j'ai une grille selon x-y où je stocke des objets ( les unités de jeu ).
D'un point de vue graphique, j'ai une JPanel ( remplis d'une texture ). . L'enjeu étant de représenter ses unités de jeu et de pouvoir les selectionner. Premiere chose à laquelle j'ai pensé, ca a été de faire une grille ( GridLayout ) de JButton avec icone ( genre icone de Soldat ) car les JButton sont aisé à controlé pour le clique. J'ai étendu les JButton pour les rendre transparent, malheuresement, deux soucis : 1/ Les JButton sont entiérement transparent, pas d'icône donc ! 2/ C'est pas vraiment optimiser pour une grande grille de jeu, autant de JButton.. Lent..
- Avez vous une idée quant à ma carte ? ( Autre solution que les JButtons ? <=> Comment savoir sur quelle unité à t'on cliquer ? )
- Et/Ou savez vous comment rendre le JButton transparent tout en conservant la visibilité de l'icône ?
Merci !
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
32
33
34
35
36
37
38
39
40
41
42
43
44
45 package army.gui; import java.awt.AlphaComposite; import java.awt.Graphics; import java.awt.Graphics2D; import javax.swing.Action; import javax.swing.Icon; import javax.swing.JButton; public class JTransparentButton extends JButton { public JTransparentButton() { super(); this.setOpaque(false); } public JTransparentButton(Action a) { super(a); this.setOpaque(false); } public JTransparentButton(Icon icon) { super(icon); this.setOpaque(false); } public JTransparentButton(String text, Icon icon) { super(text, icon); this.setOpaque(false); } public JTransparentButton(String text) { super(text); this.setOpaque(false); } public void paint(Graphics g) { Graphics2D g2 = (Graphics2D) g.create(); g2.setComposite(AlphaComposite.getInstance(AlphaComposite.SRC_OVER, 0.0f)); super.paint(g2); g2.dispose(); } }![]()
Partager