В настоящее время я работаю над небольшим проектом, в котором Jframe имеет Jlist, в котором отображается массив файлов, которые были собраны путем сканирования через каталог.Правильное использование Java ArrayList
Весь процесс работает следующим образом: отдельный класс вызывает метод в классе Jframe под названием «main». Этот «основной» метод просматривает каталог (folderAndFiles) и перечисляет все имена файлов в обычный текстовый файл (file.txt). После этого отдельный класс отображает Jframe, в котором затем есть другой сканер, который читает новый текстовый файл (file.txt) и превращает все имена внутри этого файла в arraylist (filList). Внутри функции инициализации Jframe я устанавливаю DefaultListModel для добавления элементов массива в Jlist.
Все виды работ, но есть некоторые незначительные икоты. Во-первых, тот факт, что Jlist отображает вещи из горизонтального горизонтали, то есть это будет [File1.txt, File2.txt, File3.txt, etc...]
, а не вертикально, где имена файлов отображаются под ними. Затем вторая проблема, которая, вероятно, будет исправлена, если первая проблема будет исправлена, список массивов слишком длинный, а в Jlist после перечисления некоторых файлов он заканчивается тем, что «строка длинная, перейдите в режим завершенного просмотра, чтобы увидеть целая линия ... "
Я не совсем уверен, правильно ли я использую арраист и почему он не будет перечислять элементы в Jlist вертикально и правильно.
Ниже приведена вся Jframe, где размещается Jlist, и функция выполняется.
import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Scanner;
import javax.swing.DefaultListModel;
public class DisplayTest extends javax.swing.JFrame {
static String username = System.getProperty("user.name");
static File file = new File("file.txt");
static ArrayList<String> filList = new ArrayList<String>();
public DisplayTest(){
initComponents();
DefaultListModel DLM = new DefaultListModel();
DLM.addElement(filList);
jList1.setModel(DLM);
System.out.println(filList);
}
public static void main(String args[]) {
/* Create and display the form */
java.awt.EventQueue.invokeLater(new Runnable() {
public void run() {
new DisplayTest().setVisible(true);
}
});
}
// Variables declaration - do not modify
private javax.swing.JLabel jLabel1;
private javax.swing.JList<String> jList1;
private javax.swing.JScrollPane jScrollPane1;
private javax.swing.JScrollPane jScrollPane2;
private javax.swing.JTextArea jTextArea1;
// End of variables declaration
public static void main() throws IOException {
try {
listFilesForFolderMac(folderAndFiles);
} finally {
Scanner scanner = new Scanner(file);
while (scanner.hasNextLine()) {
String line = scanner.nextLine();
filList.add(line);
}
}
public static void listFilesForFolderMac(final File folder) throws IOException {
PrintWriter writToDoc = new PrintWriter(new FileWriter("file.txt",true));
for (final File fileEntry : folder.listFiles()) {
if (fileEntry.isDirectory()) {
listFilesForFolderMac(fileEntry);
} else {
writToDoc.println(fileEntry.getName());
}
}
writToDoc.close();
}
final static File folderAndFiles = new File("/Users/" + username + "/Documents");
}
Ниже показано, как я называю JFrame и функцию, от отдельного класса
public static void main(String[] args) throws IOException {
try {
DisplayTest.main();
} finally {
DisplayTest dTest = new DisplayTest();
dTest.setVisible(true);
}
}
wow that's является путаным, имея несколько методов 'static main' –
' ArrayList' - это структура данных. Как вы * печатаете *, что структура данных не имеет реального отношения к самой структуре данных. Вы можете распечатать его в обратном порядке, если хотите. – Makoto