我有两个类,一个是设置网格,另一个是GUI。我希望第一个类中的网格插入到第二个类的jPanel中。第一个网格是一个字符网格,并且填充了随机启动的数字。我在解决如何将网格插入jpanel时遇到问题,因为这比预期的要复杂得多。我尝试过很多东西,但没有运气......有什么帮助吗?
//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]);
不知道在此添加任何内容以将网格添加到面板中
答案 0 :(得分:1)
“我无法弄清楚如何将网格插入到jpanel中,因为这比预期的要复杂得多。我尝试了很多东西,但没有运气......有什么帮助?” < / p>
不确定你正在尝试什么或者你做错了什么,但我可以建议的一件事是使用JLabel
s。它们将文本作为参数,显示标签中的文本。另一方面,JPanel
需要被绘制(意味着您需要自己实际绘制文本)。
测试这个程序,看看我在说什么
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();
}
}
以下是我将JLabel
添加到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])));
}
}
与向JPanel
添加边框和背景的方式相同,您也可以使用JLabel