如何创建一个在Java中执行所有ActionListener函数的类?

时间:2016-03-23 21:51:41

标签: java swing jbutton actionlistener jlabel

我有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;
}

1 个答案:

答案 0 :(得分:2)

MainGUI class

添加此内容,

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

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

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

删除,

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