【问题标题】:Printing an ArrayList to a JTextField via a JButton通过 JButton 将 ArrayList 打印到 JTextField
【发布时间】:2021-06-24 10:34:14
【问题描述】:

我创建了一个图书馆类,其中有一个名为 booklist 的图书 ArrayList。

public class Library {
    
    //Fields
    String libraryName;
    ArrayList<Book> booklist;

    //Constructor
    public Library() {
        this.libraryName = "Mt Baker";
    }

    public Library(String libraryName) {
        this.libraryName = libraryName;
        this.booklist = new ArrayList<Book>();

我创建了一个打印方法,可以很好地将 ArrayList 打印到控制台。

public void printBooks() {
        for (Book s : booklist)
            System.out.println("Title: \t" + s.getTitle() + "\t\tAuthor: " + s.getAuthor() +
            "\tYear: " + s.getYear() + "\tISBN :" + s.getISBN());
    }

我不知道如何编写 actionPerformed 以允许此方法将 ArrayList 打印到 JTextArea 中。我尝试了各种迭代:-

String op = evt.getActionCommand();
            Library x = new Library();
            ArrayList <Book> y = new ArrayList<>();

if (op.equals("Show Library")) {
                GUI.this.libraryResult.setText(y.printBooks().toString());
            }

libraryResult 是 JTextField,“显示库”是 JButton 侦听器事件。

此站点上的其他建议建议使用 append 和 toString,但我没有设法使它们起作用。非常感谢任何建议。

【问题讨论】:

  • 它对你有用吗(我的回答)?
  • 此站点上的其他建议建议使用 append - 是的,您将使用 JTextArea 的 append(..) 方法在遍历 ArrayList 时添加文本。但是,忘记 ArrayList。首先创建一个简单的 GUI,其中包含一个 JFrame、一个 JTextArea 和一个 JButton,以及一个包含一些文本字符串的数组。了解如何为按钮编写一个 ActionListener 以将 Array 中的文本添加到文本区域。一旦你理解了这个基本概念,它将分别用 ArrayList 替换 Array。如果您有问题,可以使用这种方法发布您的minimal reproducible example
  • 不,我还在尝试。此行不起作用:
  • “这行不行:” 什么行?提示:添加@IntoVoid(或重要的@)以通知该人有新评论。
  • 究竟是什么不起作用。动作侦听器或 getAsString 方法(在我的回答中)。或者文字的设置。您可以使用调试器进行查找,例如在 IntelliJ 中

标签: java swing arraylist jbutton jtextfield


【解决方案1】:
GUI.this.yourButton.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        String text = getAsString();
        GUI.this.libraryResult.setText(text);
    }
});

...

// Put this method somewhere else (where there is still access to your booklist)
public String getAsString() {
    StringBuilder sb = new StringBuilder();
    for (Book s : booklist) {
        sb.append("Title: \t" + s.getTitle() + "\t\tAuthor: " + s.getAuthor() + "\tYear: " + s.getYear() + "\tISBN :" + s.getISBN());
    }
    return sb.toString();
}

【讨论】:

  • 我不知道你在当前类 GUI 下有什么,但如果你将 'GUI.this.yourButton' 和 'GUI.this.libraryResult' 更改为你需要的任何东西,它应该可以工作
猜你喜欢
  • 2019-10-16
  • 1970-01-01
  • 2019-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-14
  • 1970-01-01
  • 2022-08-04
相关资源
最近更新 更多