在2D Array Java中查找按钮索引?

时间:2012-10-13 02:51:47

标签: java arrays swing jbutton actionlistener

我刚才有一个问题。我有一个2D数组按钮,当我点击它们时,我需要运行另一种方法。我当前的方法依赖于以下输入,一个String(我可以从用户轻松获得)和两个整数值。这些是由数组中的按钮位置决定的。

我有一个按钮监听器连接到这些按钮,但我不太清楚如何弄清楚按钮的位置实际上是什么。我已经制作了自己的按钮类(因为我想要一些特定的设置,我认为它会更容易)并且在制作它时我实现了一个名为getXPos和getYPos的方法,它基本上保存了数组中实际按钮的值。创建。事情是我现在不知道如何检索这些值,因为听众实际上并不知道按下了什么按钮吗?

我可以使用getSource()方法但我不知道如何调用该源的方法。例如,我尝试执行以下操作。

int x = event.getSource()。getXPos();但我无法做到这一点。有没有办法告诉我按下了什么按钮所以我可以访问它的内部方法或类似的东西?谢谢!

1 个答案:

答案 0 :(得分:2)

要在源上调用方法,必须先将其强制转换。如果您从未将ActionListener添加到除了特殊MyButton的x和y变量的实例之外的任何内容中,您可以执行以下操作:

MyButton button = (MyButton) event.getSource();
int x = button.getXPos();
int y = button.getYPos();

然后MyButton包含x和y:

public class MyButton extends JButton {

    private int xPos;
    private int yPos;

    // ...

    public int getXPos() {
        return xPos;
    }

    public int getYPos() {
        return yPos;
    }
}

并确保始终将您的监听器添加到MyButton的实例:

MyButton myButton = new MyButton();
// ...
myButton.addActionListener(new ActionListener() {
    public void actionPerformed(ActionEvent e) {
        MyButton button = (MyButton) e.getSource();
        int xPos = button.getXPos();
        int yPos = button.getYPos();
        // Do something with x and y
    }
});