Java 当我尝试将ActionListener应用于JButton以更改JLabel的内容时,不会发生任何事情

Java 当我尝试将ActionListener应用于JButton以更改JLabel的内容时,不会发生任何事情,java,jbutton,actionlistener,jlabel,Java,Jbutton,Actionlistener,Jlabel,我需要一种创建ActionListener的方法,当按下JButton时,它会更新7个不同JLabel的内容,以文本形式显示信息 从外部JAR文件调用的方法中检索数据。这些方法返回ArrayList。我尝试将ArrayList转换为字符串,并尝试使用setText()更改JLabel内容 您没有真正描述当前代码的问题所在 您可以在子面板类中添加方法saygetLabels()以返回其所有标签,也可以添加方法setLabelText(字符串文本)通过扩展或直接修改子面板类为其所有标签设置文本 更新

我需要一种创建ActionListener的方法,当按下JButton时,它会更新7个不同JLabel的内容,以文本形式显示信息

从外部JAR文件调用的方法中检索数据。这些方法返回ArrayList。我尝试将ArrayList转换为字符串,并尝试使用setText()更改JLabel内容


您没有真正描述当前代码的问题所在

您可以在
子面板
类中添加方法say
getLabels()
以返回其所有标签,也可以添加方法
setLabelText(字符串文本)
通过扩展或直接修改
子面板
类为其所有标签设置文本

更新

代码中有几个非常容易混淆的部分

在构造函数中,它应该是
this.subpanel=subpanel
,然后应该是
maingui.getSearchBtn().addActionListener(this)
,在方法
actionPerformed
中,它应该是
subpanel.label1.setText(names)
。但这些可能不是你的问题,因为你没有说这是你实际运行的代码

看起来您没有创建类
Controller
的任何实例,因此其中的代码永远不会执行

您需要在您的
Controller
类之外有一些代码,如下所示:

   MainGUI maingui;
   SubPanel subpanel;
   // they're somehow initialized

   Controller controller = new Controller(maingui, subpanel);

问题是什么也没发生。我希望的输出是,当单击JButton时,我希望将JLabel的内容更新为通过api方法获得的内容。我应该用鼠标听器吗?@LovesPie这个密码应该能用。我想唯一的一件事是,您是否曾经使用
新控制器(gui,面板)
创建
控制器
实例,并传入UI组件实例
MainGui
子面板
?您的意思是什么?像
newcontroller()?@LovesPie是的。如果您只定义了类
Controller
,并且从未在任何地方使用过它,那么您的UI不会更改,因为您没有将控制器应用于这些组件。我尝试过这样做,但它只返回一条错误消息,说明构造函数未定义。您是否测试了
actionPerformed
是否已执行?将
System.out.println(names)
放入下面的
public void actionPerformed(ActionEvent e){
并检查正在打印的内容。看起来它没有打印任何内容。似乎api没有返回任何内容。进行一些测试以找出错误的位置。例如,Put
System.out.println(nameList.size())
nameList.addAll(anAPI.getNames());
之后,您可以检查api是否返回任何内容。api确实返回了内容,名称anAPI只是一个占位符名称。您是否在任何地方清除
nameList
public void addController(Controller controller){
        control = controller;
        jb1.addActionListener(control);

    }
   MainGUI maingui;
   SubPanel subpanel;
   // they're somehow initialized

   Controller controller = new Controller(maingui, subpanel);