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 JLabel
s. Eles pegam texto como parâmetros, que mostram o texto no rótulo. JPanel
s, 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
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 JLabel
s 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