gpt4 book ai didi

Java:创建多个(重复的)按钮执行相同的操作但对自己执行

转载 作者:行者123 更新时间:2023-11-29 03:07:33 25 4
gpt4 key购买 nike

背景信息:我想制作一个 9x9 的按钮网格作为空床。所有按钮都显示“添加床位”,单击后会打开一个窗口以写入有关乘员的数据。保存后,该按钮将变为已占用的床图像。

问题:是否可以创建一个事件监听器,对每个按钮执行相同的操作,但将其应用于被按下的按钮?我是 Java 的新手,但我知道好的代码应该能够在几行而不是 100 行内完成此操作

代码:

    //button1 (inside the gui function)
addBed1 = new JButton("Add bed"); //button 1 of 9
addBed1.addActionListener(new room1Listener());

class room1Listener implements ActionListener{
public void actionPerformed(ActionEvent event){
addBed1.setText("Adding bed..);
addBedGui(); //Generic window for adding bed info.
}
}

最佳答案

Is it possible to create an event listener that does the same thing for each button, but applies it to the button being pressed? Im new to java but I understand that good code should be able to do this in a few lines rather than 100+

当然。事实上,您可以创建一个 ActionListener 对象,并将这个相同的监听器添加到 for 循环中的每个按钮。 ActionListener 将能够通过 ActionEvent#getSource() 方法获得对按下它的按钮的引用,或者您可以通过 ActionEvent 获得 JButton 的 actionCommand 字符串(通常是它的文本) #getActionCommand() 方法。

例如,

// RoomListener, not roomListener
class RoomListener implements ActionListener{
public void actionPerformed(ActionEvent event){
AbstractButton btn = (AbstractButton) event.getSource();
btn.setText("Adding bed..);
addBedGui(); //Generic window for adding bed info.
}
}

RoomListener roomListener = new RoomListener();
JButton[] addButtons = new JButton[ADD_BUTTON_COUNT];
for (int i = 0; i < addButtons.length; i++) {
addButtons[i] = new JButton(" Add Bed "); // make text big
addButtons[i].addActionListener(roomListener);
addBedPanel.add(addButtons[i]);
}

关于Java:创建多个(重复的)按钮执行相同的操作但对自己执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31328680/

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