私はマインスイーパタイプのゲーム、より具体的にはMSNゲームで機能していた2人用ゲームを作成しようとしています。Tileオブジェクトの多次元配列があります。各タイルには状態(地雷、空白、または隣接する地雷の数)があります。プログラムのフロントエンドのすべての側面を処理するGUIクラスがあります。
各タイルはJButtonを拡張し、MouseListenerを実装しますが、ボタンをクリックしても、対応するボタン/タイルのMouseClickedメソッドは起動されません。
コードは次のとおりです。
public class Tile extends JButton implements MouseListener {
private int type;
public Tile(int type, int xCoord, int yCoord) {
this.type = type;
this.xCoord = xCoord;
this.yCoord = yCoord;
}
public int getType() {
return type;
}
public void setType(int type) {
this.type = type;
}
@Override
public void mouseClicked(MouseEvent e) {
System.out.println("Clicked");
}
}
そしてGUIクラス:
public class GUI extends JPanel {
JFrame frame = new JFrame("Mines");
private GameBoard board;
private int width, height;
public GUI(GameBoard board, int width, int height) {
this.board = board;
this.width = width;
this.height = height;
this.setLayout(new GridLayout(board.getBoard().length, board.getBoard()[0].length));
onCreate();
}
private void onCreate() {
for (int i = 0; i < board.getBoard().length; i++) {
for (int j = 0; j < board.getBoard()[i].length; j++) {
this.add(board.getBoard()[i][j]);
}
}
frame.add(this);
frame.setSize(width, height);
frame.setMinimumSize(this.minFrameSize);
frame.setPreferredSize(new Dimension(this.width, this.height));
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setVisible(true);
}
}
GUIクラスJPanelはMouseClickイベントをインターセプトして、ボタンがクリックイベントを受信できないようにしますか?