从另一个读取文本文件的方法填充JList

时间:2015-05-01 15:15:22

标签: java file-io jlist

我尝试使用最终将添加到AddressBook GUI的名称填充JList。我认为我有逻辑,创建JList,通过从文本文件中读取名称的方法填充它,然后将该JList添加到我的面板。

我的文本文件如下所示:

Family,Homer Simpson,111 Homer Drive,Springfield,IL,383838,....

它读取文件的代码如下所示:



	private void readContacts()
	{
		File cFile = new File ("Contacts.txt");
		BufferedReader buffer = null;
		ArrayList <String> contact = new ArrayList<String>();
		try
		{
			buffer = new BufferedReader (new FileReader (cFile));
			String text;
			
			while ((buffer.readLine()) != null)
			{
				String sep = buffer.readLine ( );
				String [] name = sep.split (",");
				text = name[1];
				contact.add(text);
				System.out.println (text);
				
			}
			
			
		}
		catch (FileNotFoundException e)
		{
			
		}
		catch (IOException k)
		{
			
		}
	}
&#13;
&#13;
&#13;

我知道我对代码做错了,因为我在这里得到了NullPointerException String [] name = sep.split (",");。任何人都可以指出我正确的方向,并在我成功读取名称后,我将如何将其添加到JList?谢谢。

编辑:

所以,我已经改变了我的方法来返回一个ArrayList而不是void,并用这个来填充JList:

&#13;
&#13;
model = new DefaultListModel();
for (int i = 1; i < readContacts().size(); i++)
{
  model.addElement(i);
}
       
nameList = new JList (model);
add(nameList);
&#13;
&#13;
&#13;

但它只是打印出1-10而不是名字。我假设它是因为我使用size()而不是别的,有什么建议吗?

1 个答案:

答案 0 :(得分:0)

while ((buffer.readLine()) != null) { // read a line once  and check it's not null
    String sep = buffer.readLine(); // read the following line

您在每次迭代时都会读取两行。只需阅读一个:

String sep;
while ((sep = buffer.readLine()) != null) {