2011-03-08 65 views
2

是否可以在.txt文件上写入JList的内容? 如果可能的话,你能给我一个样品吗? 谢谢创建一个从JList填充它的.txt文件

+0

对不起,你想一个JList的内容保存到一个txt文件,或者使用文件作为JList的数据源? – javanna 2011-03-08 22:26:49

+0

第一个! – Franky 2011-03-08 22:29:16

回答

1

一个JList,是不是数据结构,但显示组件。

你应该有一个ListModel的内容,如果这个模型的要素是简单的字符串(或东西易于转换为字符串,你当然可以把它写在文本文件中。

public static void exportList(ListModel model, File f) throws IOException { 
    PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(f), "UTF-8")); 
    try { 
     int len = model.getSize(); 
     for (int i = 0; i < len; i++) { 
      pw.println(model.getElementAt(i).toString()); 
     } 
    } finally { 
     pw.close(); 
    } 
} 
+0

所以它就像使用DefaultListModel然后输入一个命令,如 JList.setModel(model),对吧? – Franky 2011-03-08 22:41:57

+0

以这种方式,或者如果你的List已经有了一些带有数据的模型,你可以使用'list.getModel()'来代替 - 我的方法应该和任何ListModel一起工作。 (虽然我没有测试它。) – 2011-03-08 22:45:30

0

列表有模型,模型有数据。您只需将该数据写入文件:

import javax.swing.*; 
import java.awt.BorderLayout; 
import java.awt.event.*; 
import java.io.PrintStream; 
import java.io.FileOutputStream; 
import java.io.FileNotFoundException; 
class ListDemo { 
    public static void main(String ... args) throws FileNotFoundException { 
     // The data 
     final Object [] data = {"A","B","C"}; 


     // Put it in the frame 
     JFrame frame = new JFrame(); 
     frame.add(new JScrollPane(new JList(data))); 
     // write to a file 
     final PrintStream out = new PrintStream(new FileOutputStream("datos.txt")); 
     frame.add(new JButton("Print"){{ 
      addActionListener(new ActionListener() { 
       public void actionPerformed(ActionEvent e) { 
        for(Object d : data) { 
          out.println(d); 
        } 
       } 
      }); 
     }}, BorderLayout.SOUTH); 
     frame.pack(); 
     frame.setVisible(true); 
    } 
} 

这只是一个示例。您必须创建我们自己的列表模型并使用您自己的数据填充它。

此外,我没有在这里关闭文件。

为了更多地了解JList中读到这里:

http://download.oracle.com/javase/tutorial/uiswing/components/list.html

要了解更多关于流在这里:

http://download.oracle.com/javase/tutorial/essential/io/charstreams.html

-1

是这是一个家庭作业的问题?
反正是有可能从JList中,你可以使用下面的方法,虽然我相信它不是做的最好的方式,它应该工作
其中列表是一个JList

list.setSelectedIndex(int index); //设置一个选择
list.getSelectedValue(); //返回Object

list.setSelectedIndices(INT []索引); //设置多个选择
list.getSelectedValues(); //返回所有选择值在一个Object []

写入/读取/删除/创建读this