如何创建一个 class 来执行我在 Java 中的所有 ActionListener 功能?

How do I create a class that performs all my ActionListener functions in Java?

我有 2 个单独的 类 用于构建我的 GUI 的不同侧面。

其中一个 类 MainGUI 有一个名为 jb1 的 JButton。 我一直在尝试为该按钮分配一个 ActionListener,以使其在单击 JButton 时发生。几个 JLabel 的内容已更新。

我尝试了下面的代码,

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import api.jaws.Jaws;


public class Controller implements ActionListener{

    private MainGUI maingui;
    private Sharkpanel sharkPanel;
    private String sharkname;
    private static Jaws jaws =new Jaws("XyP0D75oRCGrLE78","x47ka5jmOGaJ2zvw");
    static ArrayList<String> sharknamelist=new ArrayList<String>();


     public Controller(MainGUI maingui,Sharkpanel sharkPanel){

        this.maingui = maingui;
        this.sharkPanel = sharkPanel;

        MainGUI.getSearchBtn().addActionListener(this);

        sharknamelist.addAll(jaws.getSharkNames());

        for (String s: sharknamelist){

            sharkname += s+"\t";

        }
     }

            public void actionPerformed(ActionEvent e){

                 sharkPanel.jlz.setText("Test");

            //6 more Labels. 


        }

    }

然而什么也没有发生。我本来是 sharkPanel.jlz.setText(sharkname).

然而什么也没有发生,我想可能是因为我没有正确地将ArrayList转换成String。所以我通过放置 "Test" 来测试它,但没有任何反应。

我尝试将 addController 方法添加到 2 个相应的 GUI 类 中,但没有任何反应。像这样,

public void addController(Controller controller){
    control = controller;
    jb1.addActionListener(control);

} 

但仍然没有任何反应,我正在考虑使用 MouseListener,但我知道这可以做到,但我只是看不出我做错了什么。

更新

这就是 getSearchBtn 所做的全部。

 private static JButton jb1;

  jb1=new JButton("               Search               ");

public static JButton getSearchBtn() {

    return jb1;
}

在你的MainGUI class,

添加这个,

jb1.addActionListener(new Controller(.....)); 

按钮正确后 initialized/instantiate

做上面的改变,然后在 jb1 按钮能够调用 jb1..addActionListener(new Controller(.....));.

actionPerformed-method 之后

并删除,

MainGUI.getSearchBtn().addActionListener(this);  from Controller class.