2011-03-08 54 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