Java:按钮数组-获取源代码
假设我有一组按钮Java:按钮数组-获取源代码,java,arrays,jbutton,actionlistener,Java,Arrays,Jbutton,Actionlistener,假设我有一组按钮 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]); } private JButton[]myButtons=newjbutton[5]; 对于(i
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]);
}
private JButton[]myButtons=newjbutton[5];
对于(int i=0;i您可以在循环中添加侦听器,如下所示,如果您使用类实现ActionListener
接口
class TestGUI extends JPanel implements ActionListener{
public TestGUI(){
for(int i=0; i< 5; i++){
....
myButtons[i].addActionListener(this);
}
}
而不是在点击按钮时,您可以检查的actionPerformed方法
public void actionPerformed(ActionEvent e){
if("0".equals(e.getActionCommand())){
System.out.println("First button is clicked");
}
... so on
}
你不在乎,首先在按钮上添加一个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;
}
}
}
您还可以使用JButton
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]);
}
另一个想法是使用操作
API,它允许您定义一个自包含的实体,该实体能够自行配置按钮并处理相关的操作事件。有关更多详细信息,请参阅
但是,您可能会使用哪种方法,这将归结为您首先需要识别按钮的原因。以及获取所单击按钮的数组索引?我相信这一部分很容易理解,您不同意吗?@Eclipse22,getActionCommand将为您提供按钮的文本。在您的情况下,它将是“0”、“1”。您能解释一下“myButtons”吗[i] .addActionListener(这个);“最好是因为我个人觉得这会让人困惑。这将如何重新认识正确的事情?再加上一个你知道的最后一个想法是什么awesome@KickButtowski您可以使用ActionEvent#getSource
并将其与按钮
数组进行比较,或者使用actionCommand
(最好)按钮和动作事件的属性
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]);
}
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]);
}