我有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(.....));


在正确初始化/实例化按钮之后

进行上述更改,然后在jb1按钮之后能够调用jb1..addActionListener(new Controller(.....));;的actionPerformed-method

然后删除

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

09-10 06:02