Salut tout le monde,
Je suis entrain de preparer un projet concernant le fameux jeu SUDOKU et je suis entrain de faire l'interface grafique tout est en place normalement mais le seul probleme est la superposition de deux panneaux.EN effet, j'ai un 1er panneau qui comprend une image de fond et un autre panneau que j'ai nommer grille,bien evidement il comprend la grille du jeu.en fait je veux coller le panneau de l'image de fond sur le panneau de la grille (que j'aime bien qu'eele soit transparente pour pouvoir voir l'image de fond derriere)
Est ce possible les amis ???????
voici la classe image de fond
la classe grille
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 import javax.swing.*; import java.awt.*; import java.io.*; public class FenetreFond extends JPanel { private Image imag; public FenetreFond(Image s) throws IOException { imag = s; } public void paintComponent(Graphics g) { g.drawImage(imag, 0, 0, getWidth(), getHeight(), this); } }
la classe fenetre qui comprend le main
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 import java.awt.BorderLayout; import java.awt.Color; import java.awt.GridLayout; import javax.swing.JPanel; import javax.swing.JTextField; import javax.swing.SwingConstants; import javax.swing.UIManager; import javax.swing.border.LineBorder; public class Grille extends JPanel{ JTextField[][] Tab = new JTextField[9][9]; public Grille(){ LineBorder border = new LineBorder(Color.RED); JPanel container = new JPanel(); container.setOpaque(false); UIManager.getDefaults().put("container.background", new Color(0, 0, 0, 0)); GridLayout gl = new GridLayout(3,3); //On applique un espacement de 3 pixels entre les blocs gl.setHgap(2); gl.setVgap(2); container.setLayout(gl); JPanel sub[] = new JPanel[9]; for(int i = 0 ; i < 9 ; i++) { sub[i] = new JPanel(); for(int j = 0 ; j < 9 ; j++) { int x, y; // Positionné par sous-blocs, indexé par ligne et colonne y = j%3+(i%3)*3; x = j/3+(i/3)*3; Tab[x][y] = new JTextField(1); Tab[x][y].setHorizontalAlignment(SwingConstants.CENTER); sub[i].setLayout(new GridLayout(3,3)); sub[i].add(Tab[x][y]); } sub[i].setBorder(border); container.add(sub[i]); } } }
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 import java.awt.BorderLayout; import java.awt.Dimension; import java.awt.Image; import java.awt.Toolkit; import java.io.IOException; import javax.swing.JButton; import javax.swing.JFrame; class Fenetre extends JFrame { public Fenetre() throws IOException{ Toolkit tk = Toolkit.getDefaultToolkit(); Dimension tailleEcran = tk.getScreenSize(); int largeurEcran = tailleEcran.width; int hauteurEcran = tailleEcran.height; //image a charger Image fond = tk.getImage("sudoku.jpg"); this.setTitle("SuDoKu"); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); this.setBounds(100, 80, 900, 700); this.setSize(600, 500); this.setLocation(largeurEcran * 2 / 8, hauteurEcran * 2 / 8); FenetreFond fenFond = new FenetreFond(fond); this.setContentPane(fenFond); this.setVisible(true); } public static void main (String args[]) throws IOException { Fenetre fen = new Fenetre(); fen.setJMenuBar(new Menu()); fen.setLayout(new BorderLayout()); fen.getContentPane().setLayout(new BorderLayout()); fen.add(new Grille()); } }
Partager