gpt4 book ai didi

java - 如何在 java swing 中为按钮网格实现 actionlistener?

转载 作者:塔克拉玛干 更新时间:2023-11-02 07:48:49 26 4
gpt4 key购买 nike

我正在用 Java 开发打地鼠游戏。我正在创建一个 10*10 的按钮网格。但是我无法访问 actionlistener 中单击按钮的 id。这是我到目前为止的代码。

    String buttonID;
buttonPanel.setLayout(new GridLayout(10,10));
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
buttonID = Integer.toString(++buttonCount);
buttons[i][j] = new JButton();
buttons[i][j].setName(buttonID);
buttons[i][j].addActionListener(this);
buttons[i][j].setDisabledIcon(null);
buttonPanel.add(buttons[i][j]);
}
}

public void actionPerformed(ActionEvent ae) {
if (ae.getSource()==startButton) {
System.out.println("Game has been started");
}
if (ae.getSource() == "34") { //please see the description below
System.out.println("Yes I have clicked this button");
}
else {
System.out.println("Other button is clicked");
}
}

目前我刚刚打印了一些东西。我不知道如何将 ae.getsource() 与单击的按钮进行比较。我只是试着将它与“34”进行比较。但是当我点击网格上的第 34 个按钮时,它仍然打印“其他按钮被点击”。

最佳答案

使用按钮 actionCommand 属性根据您的要求唯一标识每个按钮...

for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
buttonID = Integer.toString(++buttonCount);
//...
buttons[i][j].setActionCommand(String.toString(buttonID));
//...
}
}

然后在您的actionPerformed 方法中,简单地查找ActionEventactionCommand 属性....

public void actionPerformed(ActionEvent ae) {
String cmd = ae.getActionCommand();
if ("0".equals(cmd)) {
//...
} else if ...

同样,您可以使用buttons 数组根据ActionEvent 的源找到按钮

public void actionPerformed(ActionEvent ae) {
Object source = ae.getSource();
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 10; j++) {
if (source == (buttons[i][j])) {
//...
break;
}
}
}

但这取决于你...

关于java - 如何在 java swing 中为按钮网格实现 actionlistener?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19216794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com