我有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;
}
答案 0 :(得分:2)
在MainGUI class
,
添加此内容,
jb1.addActionListener(new Controller(.....));
按钮正确初始化/实例化后
执行上述更改,然后在jb1
按钮后能够调用jb1..addActionListener的actionPerformed-method
(新的Controller(.....));.
删除,
MainGUI.getSearchBtn().addActionListener(this); from Controller class.