1

我只是对以下问题有疑问。我有一个二维按钮数组,当我单击它们时需要运行另一种方法。我当前的方法依赖于以下输入,一个字符串(我可以很容易地从用户那里得到)和两个整数值。这些由数组中的按钮位置决定。

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

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

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

4

1 回答 1

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
    }
});
于 2012-10-13T02:59:07.957 回答