gpt4 book ai didi

Java:按钮数组 - 获取源代码

转载 作者:行者123 更新时间:2023-12-02 04:47:39 26 4
gpt4 key购买 nike

假设我有一系列按钮

private JButton[] myButtons = new JButton[5];

for (int i=0; i<5; i++)
{
myButtons[i] = new JButton(Integer.toString(i));
myButtons[i].setSize(50, 50);
panel.add(myButtons[i]);
}

如何向这些按钮添加监听器,以便当我单击其中一个按钮时,我知道它位于哪个数组位置索引?

最佳答案

你不在乎,首先向按钮添加一个 ActionListener

myButtons[i].addActionListener(this); // Or some other ActionListener

actionPeformed 方法中,您可以使用 ActionEvent#getSource 查找它是哪个按钮

@Override
public void actionPerformed(ActionEvent evt) {
for (JButton btn : myButtons) {
if (btn.equals(evt.getSource()) {
// Do what ever you need
break;
}
}
}

您还可以使用 JButtonactionCommand 属性

for (int i=0; i<5; i++)
{
myButtons[i] = new JButton(Integer.toString(i));
myButtons[i].setActionCommand("button " + i);
myButtons[i].addActionListener(this);
panel.add(myButtons[i]);
}

当调用 actionPeformed 时,使用 ActionEvent#getActionCommand 来确定按下了哪个按钮。

更好的想法可能是为每个按钮创建一个专用的 ActionListener...

public class ButtonActionHandler implements ActionListener {
private final JButton button;
public ButtonActionHandler(JButton button) {
this.button = button;
}

public void actionPerformed(ActionEvent evt) {
// Do what ever you need to do with the button...
}
}

for (int i=0; i<5; i++)
{
myButtons[i] = new JButton(Integer.toString(i));
myButtons[i].addActionListener(new ButtonActionHandler(myButtons[i]));
panel.add(myButtons[i]);
}

另一个想法是利用 Action API,它允许您定义一个自包含实体,该实体能够配置按钮并自行处理关联的操作事件。请参阅How to Use Actions了解更多详情

但是您可能使用哪个将取决于您为什么需要首先识别按钮。

关于Java:按钮数组 - 获取源代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29529411/

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