首页 > 解决方案 > 尝试为 Minesweeper 创建 JButton 网格,但直到 MouseOver 网格才会显示

问题描述

所以我有一个使用 SWING 的扫雷器,它不会显示单个框,直到您将鼠标悬停在它们上方。这不是我喜欢的样子。有人可以帮忙吗?我正在研究网格生成。涉及两个类:Field(JFrame)和Tile(JButton)。

字段类

public class Field extends JFrame {

    private final JPanel panel;
    private final Tile[][] field;
    private final int numRows, numCols;
    private final int numMines;

    public Field(int numRows, int numCols, int numMines) {
        super("MineSweeper");
        
        this.numMines = numMines;
        this.numRows = numRows;
        this.numCols = numCols;
        field = new Tile[numRows][numCols];
        
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(540, 600);
        setResizable(false);

        panel = new JPanel();
        panel.setLayout(new GridLayout(numRows, numCols));

        for(int y=0; y<numRows; y++) {
            for(int x=0; x<numCols; x++) {
                JButton t = new Tile(x, y);
                panel.add(t);
                field[y][x] = (Tile)t;
            }
        }
        
        add(panel);
        setVisible(true);
    }
}
public class Tile extends JButton implements MouseListener{

    private final int xPos, yPos;
    private int numMinesAround;
    private boolean isMine, isFlagged;

    public Tile(int xPos, int yPos) {
        this.xPos = xPos;
        this.yPos = yPos;

        numMinesAround = 0;

        isMine = false;
        isFlagged = false;
    }
}

这只是试图让 JFrame 和 JButton 框工作。

标签: java

解决方案


推荐阅读