gpt4 book ai didi

java - 如何在Java中的JList中显示数组列表?

转载 作者:行者123 更新时间:2023-12-02 05:06:22 24 4
gpt4 key购买 nike

我有一个数组列表,想使用 gui 在 Jlist 上显示它,我使用拖放来制作表单,所以我需要动态填充列表。我尝试进入 Jlist 的属性并使模型成为自定义代码,但发生的问题是数组列表从文本文件中获取其元素,这意味着当我想填充数组列表时我应该调用一个方法它的参数之一是文件名。当使用这种方法时,应该使用 try 和 catch,但是当我设置 Jlist 的模型时,它介意使用它!我应该怎样做才能使我的数组列表作为列表显示在表单上?

    public static ArrayList<Beverage> readBeverageTextFile(String fileName) throws FileNotFoundException, IOException {
ArrayList<Beverage> bevList = new ArrayList<>();
Reader reader = new FileReader(fileName);
BufferedReader buf = new BufferedReader(reader);
String line;
while (true) {

line = buf.readLine();
if (line == null) {
break;
}

try {
StringTokenizer tokenizer = new StringTokenizer(line, "|");

String name = tokenizer.nextToken();
//System.out.println("The name is " + name);
String desc = tokenizer.nextToken();
//System.out.println("The dest " + desc);
double price = Double.parseDouble(tokenizer.nextToken());
//System.out.println("The Price is " + price);
double quantity = Double.parseDouble(tokenizer.nextToken());
//System.out.println("The Quantity is " + quantity);

double ex = Double.parseDouble(tokenizer.nextToken());
double pac = Double.parseDouble(tokenizer.nextToken());
double capacity = Double.parseDouble(tokenizer.nextToken());
//System.out.println("The Capacity is " + capacity);
bevList.add(new Beverage(capacity, name, desc, quantity, price, ex, pac));

} catch (NumberFormatException ex) {
Logger.getLogger(Beverage.class.getName()).log(Level.WARNING, "error");
}
}
return bevList;
}

最佳答案

如果您仅使用 ArrayList 读取数据,然后将其显示在 JList 中,则不要使用 ArrayList。而是使用 DefaultListModel ,通过调用 addElement(...) 来填充文件的数据,然后使用填充的数据通过 setModel(...) 设置 JList 的模型型号。

如果另一方面,您绝对必须使用 ArrayList 来保存数据,那么我认为您有两种可能的选择:

  • 使用 ArrayList,同时创建一个 DefaultListModel,并使用 for 循环用 ArrayList 数据填充列表模型。缺点是,您的数据将保存在两个集合中,并且不能保证数据将保持完全同步。
  • 使用 ArrayList 作为数据核心创建一个 AbstractListModel。这将是更简洁的方法,但需要您付出更多努力,包括确保您调用正确的 fireXXX(...) 通知方法。

更多详情请参见How to use Lists教程。

<小时/>

编辑关于您的代码,@再次,使用 DefaultListModel 代替 ArrayList。关键还在于您的对象在 JList 中的显示方式,为了实现这一点,您需要为 Beverage 类提供一个合适的 toString() 方法,否则(更好)您应该给 JList 一个像样的 ListCellRenderer。

关于java - 如何在Java中的JList中显示数组列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27756294/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com