将动态创建的ArrayList <jbutton>索引传递给ActionListener类

时间:2018-02-24 23:35:20

标签: java arraylist actionlistener

首先感谢所有贡献者。这是一个救星。那就是说,这是我的第一篇文章。

我已经创建了一个JButton对象的动态数组,并将一个ActionListener附加到该按钮。

public void printFound(ArrayList<Customer> found)
{       
    buttons = new ArrayList();
    texts = new ArrayList();
    for(Customer temp: found)
    {
        JButton btn = new JButton("Edit");
        btn.addActionListener(new PushEdit());
        btn.setPreferredSize(new Dimension(100, 40));
        panel1.add(btn);
        buttons.add(btn);
        JTextArea text = new JTextArea(temp.toString(), 8, 80);
        text.setLineWrap(true);
        panel1.add(text);
        texts.add(text);
    }
} 

当我点击编辑按钮时,我希望它将“按钮”中的“btn”索引传递给ActionListener,这样我就可以在另一个GUI中显示“temp”中的值。我想我要么直接传递temp,要么我需要传递“btn”的索引以及“found”的索引。

谢谢!

1 个答案:

答案 0 :(得分:0)

我可以从您的问题中了解到,您希望获取存储在jbutton中的buttons ArrayList的索引以执行某些操作。

要执行此操作,您可以使用setActionCommandgetActionCommand方法绑定字符串以及创建的每个jbutton

所以你的代码就像这样

public void printFound(ArrayList<Customer> found)
{       
    buttons = new ArrayList();
    texts = new ArrayList();
    Integer index=0;
    for(Customer temp: found)
    {
        JButton btn = new JButton("Edit");
        btn.setActionCommand(index.toString());
        btn.addActionListener(new PushEdit());
        btn.setPreferredSize(new Dimension(100, 40));
        panel1.add(btn);
        buttons.add(btn);
        JTextArea text = new JTextArea(temp.toString(), 8, 80);
        text.setLineWrap(true);
        panel1.add(text);
        texts.add(text);

        index=index+1;
    }
} 

每当你想获得索引时

System.out.print(btn.getActionCommand());