java - 如何将 ActionListener 放在使用 Jbuttons ArrayList 创建的 JButton 上

标签 java arraylist jbutton actionlistener onclicklistener

我试图弄清楚如何在我从 JButtons 的 arrayList 创建的 JButton 上拥有一个 Action 监听器。

这是按钮的数组列表:

public static ArrayList<JButton> myTests;
    public static ArrayList<JButton> selectedTests;

这是设置它们的逻辑:

public Devices(String[] testList, String title2)
    {
        myTests = createTestList(testList);
        selectedTests = new ArrayList<JButton>();
        checkedSerialNo = new ArrayList();
        int numCols = 2;

        //Create a GridLayout manager with
        //four rows and one column
        setLayout(new GridLayout(((myTests.size() / numCols) + 1), numCols));

        //Add a border around the panel
        setBorder(BorderFactory.createTitledBorder(title2));
        for(JButton jcb2 : myTests)
        {
            this.add(jcb2);
        }

    }

    private ArrayList<JButton> createTestList(String[] testList)
    {
        String[] tests = testList;
        ArrayList<JButton> myTestList = new ArrayList<JButton>();
        for(String t : tests)
        {
            myTestList.add(new JButton(t));
        }
        for(JButton jcb2 : myTestList)
        {
            jcb2.addItemListener(this);
        }
        return myTestList;
    }

    @Override
    public void itemStateChanged(ItemEvent ie) 
    {
        if(((JButton)ie.getSource()).isSelected())
        {
            selectedTests.add((JButton) ie.getSource());
        }

    }



    public ArrayList<JButton> getSelectedTests()
    {
        return selectedTests;
    }

我不知道如何为数组列表中生成的按钮制作actionListner或onClickListener。

感谢任何见解和帮助。

谢谢!

铁螳螂7x

最佳答案

最简单的方法是创建一个内部私有(private)类。

private class MyTestListener implements ActionListener {

   public void actionPerformed(ActionEvent e) {
     // stuff that should happen
   }
}


private class SelectedTestListener implements ActionListener {

   public void actionPerformed(ActionEvent e) {
     // stuff that should happen
   }
}

私有(private)类需要位于同一个 java 文件中(您在其中使用 ArrayList)。 创建类后,您只需添加操作监听器。

MyTestListener handler = new MyTestListener();

//Inside the for-each
button.addActionListener(myListener);

如果您只需要 1 个监听器(对于一种按钮类型,例如 itemStateListener),只需定义一个具有合适名称的私有(private)类,然后使用上面提到的函数 .addActionListener 将其添加到 foreach 中的按钮

祝你有美好的一天

关于java - 如何将 ActionListener 放在使用 Jbuttons ArrayList 创建的 JButton 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36699990/

相关文章:

java - PayPal Classic API TransactionSearch 方法不会退回已售出的商品/产品

java - 在 Java 的这种情况下,自然顺序是什么意思?

java - 即使将 Border 设置为 EmptyBorder,JButton 的边框也不会消失

java - 如何停止java桌面应用程序中移动鼠标的无限循环

java - 使用 Netbeans GUI Swing Builder 的 JComponent 位置

java - 表中的 JPA 实体将 int 主键转换为 String

java - 开发移动设备应用程序时我应该使用哪种语言

java - 基于屏幕大小自动调整UI,java swing中的UI

java - 为什么如果我直接添加答案,我的列表函数在这个问题中不起作用,但如果我创建列表的副本则起作用

javascript - 如何使用 JSON 将 java arraylist 提供给 javascript 函数