从按钮JAVA容器访问按钮

时间:2013-05-22 23:14:47

标签: java containers jbutton

我想在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获取特定按钮,这样我就可以改变它的主张。

1 个答案:

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


}