如何创建一个 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.
我有 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.