我有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.