0

我想用java为扫雷游戏制作一个界面,我现在有这个:

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 中获取特定按钮,因此我可以更改它的属性。

4

1 回答 1

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);
        }
    }


}
于 2013-05-22T23:18:29.470 回答