我想在java中为Minesweeper游戏创建一个界面,我现在有这个:
Container pane = getContentPane();
pane.setLayout(new GridLayout(10, 10));
for (int i = 1; i <= 100; i++)
{
JButton button = new JButton();
pane.add(button);
}
我不希望JButtons在开始时有任何文本,但是当我点击某个按钮时我需要在gridview中获取该按钮的行和列,我将调用一个函数来给我一个在该点附近的炸弹数量,我会将该数字作为点击该按钮的文本,任何帮助?我不知道如何从gridview获取特定按钮,这样我就可以改变它的主张。
答案 0 :(得分:3)
执行此操作的一种简单方法是创建自己的ActionListener
类,在创建这些按钮时会将行和列传递给它。当他们的行动被解雇时,他们可以将其传递给您所指的功能。像这样:
package com.sandbox;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
public class Sandbox {
public static void main(String[] args) {
Container pane = //...
pane.setLayout(new GridLayout(10, 10));
for (int r = 0; r < 10; r++) {
for (int c = 0; c < 10; c++) {
JButton button = new JButton();
button.addActionListener(new PositionAwareActionListener(r, c));
pane.add(button);
}
}
}
private static class PositionAwareActionListener implements ActionListener {
private int r;
private int c;
public PositionAwareActionListener(int r, int c) {
this.r = r;
this.c = c;
}
@Override
public void actionPerformed(ActionEvent e) {
//callYourFunction(r, c);
}
}
}