为什么 swing gui 表现得很奇怪?
Why is the swing gui behaving strange?
我刚开始在扫雷上制作 Java 应用程序。这个想法是 JFrame 内的 GridLayout JPanel。但是在执行程序后我得到一些奇怪的 window。左上角有个奇怪的灰色角。而且瓷砖并没有全部显示出来。不知何故将鼠标悬停在它们上面显示。
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);
这个程序产生了这个丑陋的可憎之物。
如何让网格一次全部显示出来?以及如何去除左上角的那个灰点。
注意:我刚开始使用 Swing GUI,所以几乎一无所知。尽量不要弄得太复杂。
我尝试重写了这个布局代码,一点也不复杂:)
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
class。
我刚开始在扫雷上制作 Java 应用程序。这个想法是 JFrame 内的 GridLayout JPanel。但是在执行程序后我得到一些奇怪的 window。左上角有个奇怪的灰色角。而且瓷砖并没有全部显示出来。不知何故将鼠标悬停在它们上面显示。
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);
这个程序产生了这个丑陋的可憎之物。
如何让网格一次全部显示出来?以及如何去除左上角的那个灰点。
注意:我刚开始使用 Swing GUI,所以几乎一无所知。尽量不要弄得太复杂。
我尝试重写了这个布局代码,一点也不复杂:)
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
class。