【发布时间】:2021-12-29 17:13:25
【问题描述】:
我正在尝试创建一个由 100 个正方形组成的网格。我下面的代码非常错误,我不知道为什么。
import javax.swing.*;
import javax.swing.border.Border;
import java.awt.*;
public class snake extends JFrame
{
public static void main(String[] args)
{
Border whiteLine = BorderFactory.createLineBorder(Color.white);
//-----------FRAME
JFrame frame = new JFrame();
frame.setSize(1000,1000);
frame.setTitle("Snake");
frame.setDefaultCloseOperation(EXIT_ON_CLOSE);
frame.getContentPane().setBackground(Color.black);
frame.setVisible(true);
frame.setLayout(new GridLayout(10,10));
//-----------FRAME
//-----------PANELS
Dimension panelDimension = new Dimension(20,20);
int counter = 0;
JPanel[][] p = new JPanel[10][10];
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
p[i][j] = new JPanel();
//p[i][j].setPreferredSize(panelDimension);
p[i][j].setBackground(Color.red);
//p[i][j].setLocation(490,490);
p[i][j].setBorder(whiteLine);
p[i][j].setVisible(true);
frame.getContentPane().add(p[i][j]);
counter+=1;
}
}
System.out.println("counter: " + counter);
}
}
当我运行这样的代码时,它会显示一个由 2 列组成的网格,第一列有 7 行,第二列有 6 行。有时它甚至会显示其他不正确的列数和行数。我不知道为什么它不创建一个 10 行 10 列的网格。
【问题讨论】:
-
1) 类名应以大写字符开头。 2)不要扩展JFrame,不需要扩展任何类。您的代码创建了一个 JFrame 实例,因此不需要两个实例。 3) Swing组件默认是可见的,所以不需要让面板可见。
标签: java swing jframe layout-manager grid-layout