gpt4 book ai didi

java - 如何制作 50 x 50 个标签的网格?

转载 作者:行者123 更新时间:2023-12-02 05:21:33 25 4
gpt4 key购买 nike

我正在重新制作经典游戏“贪吃蛇”。我的想法是首先制作一个 50 x 50 个单元格的网格,其中每个单元格是 10 x 10 像素的标签。

但是,我无法让它工作。我正在使用 GridLayout 但不知何故这并没有真正起作用,因为我显然无法设置每个网格的站点。

我在 YouTube 上观看了一段视频,其中一个人制作了一款井字游戏,其中每个网格的大小都会自动适应添加图像的大小。如果我使用标签而不是图像该怎么办?

基本上,我应该怎样做才能使每个单元格大小为 10 x 10 像素,并将它们放入 50x50 单元格的网格中?

import java.awt.*;
import javax.swing.*;

public class MainSnake {
JFrame frame;
JLabel[][] cells;

MainSnake() {
//Frame initializion
frame = new JFrame("Snake");
frame.getContentPane().setBackground(Color.BLACK);
frame.setSize(500, 500);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setResizable(false);
frame.setLayout(new GridLayout(50, 50));

createCells();

} //End MainSnake

public static void main(String[]a) {
new MainSnake();
} //End main

public void createCells(){
int a = 0;
int i;
cells = new JLabel[50][50];
for (i = 0; i < 50; i++){
if(i < 50){
cells[i][a] = new JLabel("");
cells[i][a].setOpaque(true);
cells[i][a].setBackground(Color.white);
cells[i][a].setBorder(BorderFactory.createLineBorder(Color.BLUE, 1));
cells[i][a].setPreferredSize(new Dimension(10,10));
frame.add(cells[i][a]);
} if(i==49){
i = 0;
aa++;
}
} //End for
}

} //End Class

这就是我得到的(我只是添加了边框以便能够看到每个单元格的样子):

enter image description here

最佳答案

Ken,你有时间可以尝试一下这个解决方案吗?

import java.awt.*;

import javax.swing.*;

public class MainSnake {
JFrame frame;
JPanel panel;
JLabel[][] cells;

MainSnake() {
// Frame initializion
frame = new JFrame("Snake");
frame.setLayout(new BorderLayout());
frame.getContentPane().setBackground(Color.BLACK);
frame.setSize(700, 700);
frame.setVisible(true);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
//frame.setResizable(false);
panel = new JPanel();
panel.setLayout(new GridLayout(50, 50));
frame.add(panel);

createCells();

panel.revalidate();
panel.repaint();




} // End MainSnake

public static void main(String[] a) {
new MainSnake();
} // End main

public void createCells() {
int i;
cells = new JLabel[50][50];
for (i = 0; i < 50; i++) {
for (int j = 0; j < cells.length; j++) {
cells[i][j] = new JLabel(i+"");
cells[i][j].setOpaque(true);
cells[i][j].setBackground(Color.white);
cells[i][j].setBorder(BorderFactory.createLineBorder(Color.BLUE, 1));
//cells[i][j].setPreferredSize(new Dimension(10, 10));
panel.add(cells[i][j]);
}
} // End for
}

}

关于java - 如何制作 50 x 50 个标签的网格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26469017/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com