使用此link中的代码将文本文件内容加载到GUI:

Map<String, ArrayList<String>> sections = new HashMap<>();
String s = "", lastKey="";
try (BufferedReader br = new BufferedReader(new FileReader("input.txt"))) {
    while ((s = br.readLine()) != null) {
        String k = s.substring(0, 10).trim();
        String v = s.substring(10, s.length() - 50).trim();
        if (k.equals(""))
            k = lastKey;

        ArrayList<String> authors = null;
        if(sections.containsKey(k))
        {
            authors = sections.get(k);
        }
        else
        {
            authors = new ArrayList<String>();
            sections.put(k, authors);
        }
        authors.add(v);
        lastKey = k;
    }
} catch (IOException e) {
}


在@Michael Markidis的帮助下,使用以下代码计算HashMap项:

// to get the number of authors
int numOfAuthors = sections.get("AUTHOR").size();


现在,我想使用numOfAuthors作为jButton1的参数,例如:

jButton1.doClick(numOfAuthors);


实际上是GUI的一般结构:我有jPanel1jTextField1jButton1jButton1将动态tf添加到jPanel2

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
    SubPanel sub = new SubPanel();
    jPanel2.add(sub);
    jPanel2.revalidate();
}


HashMap中的项目数是12,所以我想将此数字用作jButton1的参数,然后单击12次并添加其他12 sub

    System.out.println(numOfAuthors);
    Output: 12


但是,此时jButton1仅添加1 sub

我不明白为什么它不能正常工作。

最佳答案

写一个实现ActionListener的类

public class Clicker implements ActionListener {

    @Override
    public void actionPerformed(ActionEvent e) {
    }

}


向该类添加一个构造函数,该构造函数需要一个数字

public class Clicker implements ActionListener {

    private int count;

    public Clicker(int count) {
        this.count = count;
    }

    @Override
    public void actionPerformed(ActionEvent e) {
    }

}


例如,使用它来确定您需要做什么

@Override
public void actionPerformed(ActionEvent e) {
    for (int index = 0; index < count; index++) {
        SubPanel sub = new SubPanel();
        jPanel2.add(sub);
    }
}


然后,您可以针对您的ActionListener注册该JButton

jButton1.addActionListener(new Clicker(12));


请记住,如果您先前已在按钮中添加了任何ActionListener,则需要先将其删除

请查看How to Use Buttons, Check Boxes, and Radio ButtonsHow to Write an Action Listeners以获得更多详细信息

对于更高级的方法,您可以考虑查看How to Use Actions

10-08 08:38