/ / adicionando char grid ao jPanel - java, eclipse, swing, gridworld

adicionando grade de caracteres ao jPanel - java, eclipse, swing, gridworld

Eu tenho duas classes, uma onde a grade é definida eo outro onde uma GUI é feita. Eu quero que a grade da primeira classe seja inserida no jPanel na segunda classe. A primeira grade é uma grade de caracteres e é preenchida com números que são iniciados aleatoriamente. Estou tendo problemas para descobrir como inserir a grade no jpanel, pois isso é mais complicado do que o esperado. Eu tentei muitas coisas, mas não tive alguma sorte .. Alguma ajuda?

//set grid class

public void setgrid() {
Random ran = new Random();
for (int i = 0; i < X; i++) {
for (int j = 0; j < Y; j++) {
int num = ran.nextInt(10);
if (num == 4) {
grid[i][j] = "F";
} else if (num == 9) {
grid[i][j] = "O";
} else {
grid[i][j] = " ";
}}}


// Panel Class
Panel = new JPanel(new GridLayout(X, Y));
for (int i = 0; i < X; i++) {
for (int j = 0; j < Y; j++) {
world[i][j] = new JPanel();
world[i][j].setBackground(Color.white);
world[i][j].setBorder(BorderFactory
.createLineBorder(Color.black));
Panel.add(world[i][j]);

Não é certo o que adicionar aqui para adicionar a grade no painel

Respostas:

1 para resposta № 1

"Estou tendo problemas para descobrir como inserir a grade no jpanel, pois isso é mais complicado do que o esperado. Já tentei muitas coisas, mas ainda não tive sorte. Alguma ajuda?"

Não sei exatamente o que você está tentando fazer ou o que você está fazendo errado, mas uma coisa que eu posso sugerir é usar JLabels. Eles pegam texto como parâmetros, que mostram o texto no rótulo. JPanels, por outro lado, precisa ser desenhado (o que significa que você realmente precisa desenhar o texto).

Teste este programa, para ver do que estou falando

insira a descrição da imagem aqui

import java.awt.GridLayout;

import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;

public class DrawGrid {

public DrawGrid() {
int[][] grid = getGrid();

JPanel panel = new JPanel(new GridLayout(10, 10));
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
panel.add(new JLabel(String.valueOf(grid[i][j])));
}
}

JFrame frame = new JFrame();
frame.add(panel);
frame.pack();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setLocationRelativeTo(null);
frame.setVisible(true);


}

public int[][] getGrid() {
int[][] grid = new int[10][10];
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
grid[i][j] = i;
}
}
return grid;

}
public static void main(String[] args) {
new DrawGrid();

}

}

Aqui está o código onde eu adiciono o JLabels para o JPanel

    JPanel panel = new JPanel(new GridLayout(10, 10));
for (int i = 0; i < grid.length; i++) {
for (int j = 0; j < grid[i].length; j++) {
panel.add(new JLabel(String.valueOf(grid[i][j])));
}
}

Da mesma forma que você adiciona bordas e plano de fundo ao JPanel, você também pode fazer com JLabel