Как импортировать TXT-файл в JTable и сделать первый прирост столбца автоматически в соответствии с количеством строк файла - PullRequest
0 голосов
/ 02 ноября 2019

Я делаю некоторое кодирование Java, и мне нужно импортировать файл в Jtable, который имеет 4 столбца, в то время как мой файл имеет 3 (разделенных пробелами, мне нужно, чтобы первый столбец каждой строки был автоинкрементным, вот мойкод:

try {
    FileReader  files = new FileReader(file);
    BufferedReader buf = new BufferedReader(files);                
    String line = null; 
    String tokens[] = null;
    while ((line = buf.readLine()) != null) { 
        tokens = line.split("\\p{javaWhitespace}+");
        //System.out.println( Arrays.toString( tokens ));
        model.addRow(tokens);
    } 
}   

и вот что я получаю:
image

и это мой файл:
file

1 Ответ

1 голос
/ 02 ноября 2019

Просто добавьте дополнительный токен в начало своих данных. Это проще всего использовать Vector, а не массив. Первый элемент в векторе - это индекс строки, следующие элементы заполняются из вашего массива токенов. Например:

try {
    FileReader  files = new FileReader(file);
    BufferedReader buf = new BufferedReader(files);                
    String line = null; 
    String tokens[] = null;
    int count = 0;
    while ((line = buf.readLine()) != null) { 
        tokens = line.split("\\p{javaWhitespace}+");
        Vector<Object> row = new Vector<>();
        row.add(count);
        count++;
        for (String text: tokens) {
            row.add(text);
        }
        model.addRow(row); // add the Vector, not the tokens array
    } 
}

Существуют и другие способы, в том числе расширение табличной модели таким образом, чтобы она автоматически это делала, и это может потребоваться в зависимости от ваших потребностей - например, строки дляперенумеровать, если одна строка удалена или добавлена ​​во время работы программы? Если это так, логика должна быть в пределах модели таблицы.

...