使用分隔符从文本文件填充JComboBox

时间:2014-06-05 23:53:21

标签: java swing arraylist io jcombobox

enter image description here

我没有找到完整的答案只是帮助如何启动它或者我可以看一些可以帮助我解决这个问题的参考资料。好的,我必须从文本文件中填充JComboBoxaccountnumber)。 txt文件读作:

1231<>Jack Williams<>2015/1/21<>463.02
1232<>Jane Brown<>2015/1/21<>13510.54
1233<>Paul Gonzales<>2015/1/22<>680.17
1234<>Jian Chen<>2015/1/22<>1117.54
1235<>Lily Makki<>2015/1/22<>1124.89
1236<>Michael Lopez<>2015/1/23<>800.0
1237<>Jose Alvarez<>2015/1/23<>607.21
1238<>Tina Lin<>2015/1/24<>11077.0

读作acctNumber<>CustomerName<>openDate<>balance

我将如何开始这个?哪个分割4个变量最容易。 array / arraylist / hashmap等?

我不熟悉文件I / O.收藏的麻烦,所以这是我唯一坚持的部分。

import java.io.*;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

public class AccountUtility {
List<String> accountsInfo = new ArrayList<>();
BufferedReader in;
File file  = new File("accounts.txt");
public AccountUtility(){
    ReadFile();
}
public void ReadFile(){
    String nxtLine = " ";

    try{
    in = new BufferedReader(new FileReader(file));

    while(nxtLine != null){
    nxtLine = in.readLine();
    accountsInfo.add(nxtLine);
    }
    for(String items : accountsInfo)
    System.out.println(items);
    in.close();
    }catch(IOException ex){
    }

}
public static void main(String[] args) {
    AccountUtility ut = new AccountUtility();

}

}

所以我决定使用一个列表,这只是我的accountutility类我刚添加了一个mainmethod所以我可以测试这个类和结果当我运行它来

  

1231&lt;&gt; Jack Williams&lt;&gt; 2015/1/21&lt;&gt; 463.02
  1232&lt;&gt; Jane Brown&lt;&gt; 2015 / 1/21&lt;&gt; 13510.54
  1233&lt;&gt; Paul Gonzales&lt;&gt; 2015/1/22&lt;&gt; 680.17
  1234&lt;&gt; Jian Chen&lt;&gt; 2015 / 1/22&lt;&gt; 1117.54
  1235&lt;&gt; Lily Makki&lt;&gt; 2015/1/22&lt;&gt; 1124.89
  1236&lt;&gt; Michael Lopez&lt;&gt; 2015/1/23&lt;&gt; 800.0
  1237&lt;&gt; Jose Alvarez&lt;&gt; 2015/1/23&lt;&gt; 607.21
  1238&lt;&gt; Tina Lin&lt;&gt; 2015 / 1/24&lt;&gt; 11077.0
  空

如何使用分隔符拆分列表?

3 个答案:

答案 0 :(得分:1)

您的主要标识符是帐号,您需要能够确定帐号详细信息。

这会让我使用某种Map

然后我会创建一个Account类,它将所有信息保存在一个简单易用的类中,该类提供了适当的setter和getter。

这将使我倾向于我实际上不需要Map,因为我需要的所有信息都在Account类中,所以相反,我只是创建一个{ {1}}对于能够从ListCellRenderer类的实例获取帐号的组合框并正确显示...

这意味着我只需要AccountList来保存帐户详细信息

仔细查看How to Use Combo Boxes了解更多详情

答案 1 :(得分:1)

要显示一个Object,Swing组件将使用放置在其中的Object的toString()方法。

一种方法是创建一个包含名称,ID等的Data类,实现toString()以显示您想要的内容(在您的情况下,是帐号),然后将这些对象的列表放在您的JComboBox

然后在更改组合中的选择时,获取所选项目,将其强制转换为数据类,然后调用getDate(),getName()等来填充文本字段。

如果你想在组合中实际显示客户的额外细节(毕竟,谁真的通过账号知道这个人?),那么请看一个方法: DetailedComboBox

答案 2 :(得分:-1)

贾斯汀,我在同一条船上创建了一个类似的程序,可以从文本文件中读取。对于单元格(例如Excel或Sql)有一个很好的给定,但需要从文本文件中读取它。我在想:

String tmp [] = line.split ("<>");

这将从每个中断输出数据。