Создайте файл .txt, заполнив его из JList - PullRequest
2 голосов
/ 09 марта 2011

Можно ли записать в файл .txt содержимое JList? Если это возможно, вы можете дать мне образец? Спасибо

Ответы [ 3 ]

2 голосов
/ 09 марта 2011

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 голосов
/ 09 марта 2011

Это вопрос домашнего задания?
в любом случае да, из JList можно использовать следующий метод, хотя я уверен, что это не лучший способ сделать это, он должен работать
, где list - это JList

list.setSelectedIndex (int index);// устанавливает один выбор
list.getSelectedValue ();// возвращает Object

или

list.setSelectedIndices (int [] indices);// устанавливает множественный выбор
list.getSelectedValues ​​();// возвращает все выбранные значения в объекте []

для записи / чтения / удаления / создания чтения this

0 голосов
/ 09 марта 2011

В списке есть модель, а в модели есть данные. Вам просто нужно записать эти данные в файл:

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

...