[英]Nothing happen When I use the method setBounds with JButton and JLabel
[英]Nothing happens when I try to apply an ActionListener to a JButton to change the content of the JLabel
我需要一種創建ActionListener的方法,當按下JButton時,它會更新7個不同JLabel的內容,以文本形式顯示信息。
數據是從外部JAR文件調用的方法中檢索的。 該方法返回ArrayList。 我試圖將ArrayList轉換為String,並嘗試使用setText()更改JLabel內容。
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import api.anAPI.THEAPINAME;
public class Controller implements ActionListener {
private MainGUI maingui;
private SubPanel subpanel;
private static THEAPINAME anAPI =new THEAPINAME("XyP0D75oRCGrLE78","x47ka5jmOGaJ2zvw");
static ArrayList<String> nameList =new ArrayList<String>();
private String names;
public Controller(MainGUI maingui,SubPanel subpanel){
this.maingui = maingui;
this.SubPanel = subpanel;
MainGUI.getSearchBtn().addActionListener(this);
nameList.addAll(anAPI.getNames());
for (String s: nameList){
names+= s+"\t";
}
}
public void actionPerformed(ActionEvent e) {
SubPanel.label1.setText(names);
//6 more Labels.
}
}
另外,因為我有7個JLabel,我需要做7個getLabel方法嗎? 還是有一種方法僅用一種方法就能將它們全部獲得。
我不能完全確定我做錯了什么,可能是因為我使用的getMethods返回的小部件有問題,因為GUI的代碼不是我而是由隊友完成的,而他的工作做得很差對我們來說很清楚。
更新:修復了GUI,使其更清晰,所以我認為這不再是問題。 現在我認為問題可能是我沒有按照我的想法將ArrayList的內容轉換為String。
該代碼的期望功能是,當單擊JButton時,有問題的JLabel都將更新為它們的相關數據。
addController方法
public void addController(Controller controller){
control = controller;
jb1.addActionListener(control);
}
您並未真正描述當前代碼的問題所在。
您可以在SubPanel
類中添加方法getLabels()
以返回其所有標簽,也可以添加方法setLabelText(String text)
通過擴展或直接修改SubPanel
類來SubPanel
所有標簽設置文本。
更新
您的代碼中有幾個非常混亂的部分。
在構造函數中,應為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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.