Bonjour !
J'ai un petit soucis qui est tout bête mais que je n'arrive pas à résoudre, ce qui est d'autant plus rageant. Voilà :
J'ai une classe SurfaceDessin qui étend JPanel. Je veux que cette classe soit le content pane d'une JFrame pour pouvoir facilement dessiner dedans etc...
Seulement, quoique je fasse, l'objet SurfaceDessin ne prend pas toute la JFrame !!
J'ai beau redéfinir getPrefferedSize, peindre à partir de 0,0, jongler avec tous les Layout, rien ne fonctionne...
Voici une capture d'écran, SurfaceDessin est en blanc et la JFrame en vert :
Je voudrais que toute la fenêtre soit blanche !
Voici le code de SurfaceDessin et du main (crade mais c'est pour des tests rapide et du coup il est retourné dans tous les sens) :
Code JAVA : 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 class SurfaceDessin extends JPanel{ private int x = 75,y = 100; SurfaceDessin(){ super(); setBackground(Color.WHITE); setAlignmentX(0); setAlignmentY(0); } public void paintComponent(Graphics g){ super.paintComponent(g); Graphics2D g2d = (Graphics2D) g; g2d.setColor(Color.RED); g2d.drawRect(x,y,50,10); } public Dimension getPreferredSize(){ return new Dimension(300,150);} public int getX(){ return x; } public void setX(int x){ this.x = x; } }
Code JAVA : 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 class MaFenetre extends JFrame{ MaFenetre(){ /*Cette technique place la création de l'interface dans l'EDT(Event Dispatch Thread) afin d'éviter les "blocages" du programme * en gros on lance un thread spécifique à la création de l'interface */ SwingUtilities.invokeLater(new Runnable() { public void run() { setTitle("Graph2D"); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); setBackground(Color.GREEN); setSize(300,150); pan = new SurfaceDessin(); setContentPane(pan); pan.addMouseListener(new EcouteClic(pan)); //Les deux prochaines lignes sont obligatoires pour que le panel puisse "capter" les évènements claviers pan.setFocusable(true); pan.requestFocus(); pan.addKeyListener(new EcouteTouche(pan)); } }); } private SurfaceDessin pan; } ]
Merci d'avance pour votre aide !
Partager