Bonsoir.
J'ai un problème.
En fait j'ai une JFrame contenant un JPanel avec un BorderLayout...
Dans ce JPanel, j'ai deux Cartes (extends JComponent) où je redéfinis paintComponent.
Au démarrage de l'application, mes deux cartes ne sont pas visibles...
Par contre si je redimensionne la fenêtre, là c'est bon elles s'affichent.
J'aimerais que mes cartes soient visibles dès le chargement de l'application...
Merci en tout cas de votre patience si vous lisez le code ci-dessous.
Voici le code de la classe Carte:Voici le code de la classe Principale:
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
46
47
48
49
50
51
52
53
54
55
56
57 public class Carte extends JComponent implements Comparable<Carte>, Cloneable, MouseListener{ private static final long serialVersionUID = 1L; private static final String extensionImagesCartes = ".gif"; private Couleur couleur; private Valeur valeur; private Image image; public int compareTo(Carte carte) { return this.valeur.compareTo(carte.valeur); } public void paintComponent(Graphics g){ //super.paintComponents(g); g.drawImage(image, 0, 0, null); System.out.println("oui"); } public Dimension getPreferredSize() { return new Dimension(this.image.getWidth(this),this.image.getHeight(this)); } public Carte(Couleur couleur, Valeur valeur){ this.couleur = couleur; this.valeur = valeur; this.setLayout(new FlowLayout()); String aze = valeur.getCaractereCarte() + couleur.getCouleurCarte() + extensionImagesCartes; this.image = Toolkit.getDefaultToolkit().getImage("C:\\Documents and Settings\\lionrouge\\workspace\\site lionrouge\\fr\\free\\lionrouge\\freecell\\" + aze); repaint(); } public String toString(){ return "[" + valeur.getCaractereCarte() + "," + couleur.name() + "]"; } public Couleur getCouleur() { return couleur; } public Valeur getValeur() { return valeur; } public Carte clone(){ return new Carte(this.couleur, this.valeur); } public void mouseClicked(MouseEvent e) {} public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} }
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 public class Principal extends JPanel implements MouseListener{ private static final long serialVersionUID = 1L; // dimention de la fenetre public static Dimension dimensionFenetre = new Dimension(600, 400); // couleur de fond de la fenetre public static Color couleurFond = new Color(48, 118, 35); public static void main(String[] args) { JFrame jf = new JFrame("FreeCell"); jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); Carte a = new Carte(Couleur.PIQUE, Valeur.AS), b = new Carte(Couleur.TREFLE, Valeur.SEPT); Principal pp = new Principal(); pp.setLayout(new BorderLayout()); pp.add(a, BorderLayout.NORTH); //pp.add(b, BorderLayout.SOUTH); a.addMouseListener(pp); b.addMouseListener(pp); jf.setContentPane(pp); jf.paintAll(jf.getGraphics()); jf.setSize(Principal.dimensionFenetre); jf.setLocationRelativeTo(null); jf.setVisible(true); } public Principal() { } public void mouseClicked(MouseEvent e) { JOptionPane.showMessageDialog(this, "coucou"); } public void mousePressed(MouseEvent e) {} public void mouseReleased(MouseEvent e) {} public void mouseEntered(MouseEvent e) {} public void mouseExited(MouseEvent e) {} }
Partager