簡體   English   中英

當我嘗試將ActionListener應用於JButton更改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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM