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