Bonjour a tous,
Je me heurte a un petit problème tout bête, mais je n'y comprends rien.
Je voudrais afficher une grille de JLabel dans un JPanel. J'ai aussi besoin que les objets JLabel retourne 2 valeurs représentant respectivement sa position en abscisse et en ordonnée.
J'ai donc écrit une classe MyJLabel hérité de JLabel dans laquelle j'ai ajouté 2 propriétés x et y.
Mais les MyJLabel s'affiche les uns au dessus des autres (voir l'image 1).
Lorsque je remplace MyJLabel par JLabel, l'affichage est correct (voir l'image 2).
Je comprends bien que ma classe MyJLabel est incomplète mais en quoi ??
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
58 package gui; import java.awt.Color; import java.awt.Dimension; import java.awt.GridLayout; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; public class Main { public static void main(String[] args) { // TODO Raccord de méthode auto-généré JFrame frame = new JFrame(); JPanel panel = new JPanel(); MyJLabel[][] label = new MyJLabel[4][4]; panel.setLayout(new GridLayout(3,3)); for (int x = 1 ; x <= 3 ; x++) { for (int y = 1 ; y <= 3 ; y++) { label[x][y] = new MyJLabel(x,y); label[x][y].setOpaque(true); label[x][y].setBackground(new Color(x*80,y*80,0)); label[x][y].setPreferredSize(new Dimension(50,50)); label[x][y].setText(""+x+","+y); panel.add(label[x][y]); } } frame.getContentPane().add(panel); frame.pack(); frame.setVisible(true); } } class MyJLabel extends JLabel { private int x; private int y; public MyJLabel(int x, int y) { super(); this.x = x; this.y = y; } public int getX() { return x; } public int getY() { return y; } }
Partager