我刚刚开始在Minesweeper上制作Java应用程序。这个想法是GridLayout JPanel在JFrame中。但是在执行程序之后我得到了一些奇怪的窗口。左上角有一个奇怪的灰色角落。而且瓷砖也不全显示出来。不知何故,鼠标悬停在他们身上。
JFrame frame = new JFrame("MineSweeper");
JPanel panel = new JPanel();
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setPreferredSize(new Dimension(600, 540));
frame.add(panel);
panel.setPreferredSize(new Dimension(540, 540));
panel.setLayout(new GridLayout(numRows, numCols));
for(int y=0; y<numRows; y++) {
for(int x=0; x<numCols; x++) {
Tile t = new Tile(x, y);
panel.add(t);
field[y][x] = t;
}
}
frame.pack();
panel.setVisible(true);
frame.setVisible(true);这个节目产生了这种丑恶的东西。

如何使网格同时显示?以及如何去除左上角的灰色斑点。
Note:我刚刚开始使用Swing GUI,所以我几乎什么都不知道。尽量别让事情变得复杂。
发布于 2021-03-03 03:32:13
我尝试重写这个布局代码,一点也不复杂:)
public class MineSweeper extends JFrame {
public static void main(String[] args) {
int columns = 10, rows = 10;
int cellSize = 50;
JPanel board = new JPanel();
board.setLayout(new GridLayout(rows, columns));
for (int i = 0; i < columns; i++) {
for (int j = 0; j < rows; j++) {
board.add(new Button("x"));
}
}
MineSweeper mineSweeper = new MineSweeper();
mineSweeper.setDefaultCloseOperation(EXIT_ON_CLOSE);
mineSweeper.setContentPane(board);
mineSweeper.setSize(cellSize * columns, cellSize * rows);
mineSweeper.setResizable(false);
mineSweeper.setVisible(true);
}
}

因此,我认为可能是您的问题是关于setPreferredSize()调用,或您的Tile类。
https://stackoverflow.com/questions/66450236
复制相似问题