Bonjour à tous,
Je cherche à afficher des chiffres précis au centre des cases qui sont dessinées sur ma Fenêtre, le problème est que je ne sais pas comment "automatiser" ça, est-ce que je dois, par exemple pour un tableau de 100 cases, créer 100 TexArea manuellement? Ou peut-on le faire autrement? Je ne sais pas non plus comment disposer ce TextArea à des coordonnées précises, j'en viens même à me demander s'il n'existe pas un autre outils de java plus pratique pour ce que je cherche à faire.
Le code de ma Fenêtre :
Le code de mon Panel :
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 import java.awt.*; import java.awt.event.*; import javax.swing.*; import javax.swing.event.*; public class Fenetre extends JFrame { private JPanel container = new JPanel(); private Grid grid; private Panneau pan; public Fenetre(Grid grid, Panneau pan){ this.grid = grid; this.pan = pan; this.setTitle("Ou qu il va le robot"); this.setSize(500, 500); this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); this.setLocationRelativeTo(null); container.setBackground(Color.white); container.setLayout(new BorderLayout()); container.add(pan); this.setContentPane(container); this.setSize((int)getToolkit().getScreenSize().getWidth(), ((int)getToolkit().getScreenSize().getHeight() - 40)); this.setVisible(true); this.pan.paintComponent(this.pan.getGraphics()); this.setContentPane(container); } }
J'ai aussi un autre problème (mais qui celui-ci n'est pas en rapport avec l'interface graphique). Dans une classe Grid j'ai un attribut de type Dir et le dire est déclaré comme suit dans la classe Grid :
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 import java.math.*; import java.util.*; import java.awt.*; import javax.swing.*; public class Panneau extends JPanel { private Grid grid; public Panneau(Grid g){ super(); this.grid = g; } public void paintComponent(Graphics g){ int sizeX = grid.getSizeX(); int sizeY = grid.getSizeY(); int posX = grid.getPosX(); int posY = grid.getPosY(); int[][] tab = grid.getGrid(); int taillemax; int taillecarre; for (int j = 0; j < sizeY; j ++) { for (int i = 0; i < sizeX; i ++) { if(j==posY && i==posX){ g.setColor(Color.RED); g.fillRect(i*100, (sizeY-1)*100-j*100, 100, 100); } g.setColor(Color.BLACK); g.drawRect(i*100, (sizeY-1)*100-j*100, 100, 100); } } } }
De quelle manière cet objet peut-il être déclaré en tant qu'attribut d'un Grid, j'ai essayé:
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 private enum Dir { E(0, 1, 0), N(1, 0, 1), W(2, -1, 0), S(3, 0, -1); private final int intValue, moveX, moveY; private static final Map<Integer, Dir> intToDir = Stream.of(values()).collect(Collectors.toMap(Dir::toInt, e -> e)); Dir(int intValue, int moveX, int moveY) { this.intValue = intValue; this.moveX = moveX; this.moveY = moveY; } int toInt() { return intValue; } static Dir fromInt(int dir) { return intToDir.get(mod(dir, 4)); } Dir rotate(int rot) { return fromInt(toInt() + rot); } void move(Grid grid, int dist) { grid.move(moveX * dist, moveY * dist, 0); } }
Mais ce n'est évidemment pas accessible en dehors de cette fameuse classe Grid, je bloque donc sur ce qui me semble être quelque chose d'assez simple, si une âme charitable passe par ici, je suis preneur
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Grid tableau = new Grid(new Dir(0,1,0));
Merci d'avoir lu ! Je suis dispo pour toute info supplémentaire![]()
Partager