Для отображения данных из текстового файла в JTable

Мой текстовый файл содержит данные в виде: sample.txt
MEMHEAD 1 1 NA SetString srcCode

MEMHEAD 1 2 нет данных SetString memIdnum

LGLNAME 1 5 NA SetString onmfirst

Я создал класс MyClassModel, расширяющий AbstractTableModel как:

    public class MyClassModel extends AbstractTableModel 
{

    Vector data;
    Vector columns;
    public MyTableModel() {
            String line;

            try {
                    FileInputStream fis = new FileInputStream("sample.txt");
                    BufferedReader br = new BufferedReader(new InputStreamReader(fis));
                    StringTokenizer st1 = new StringTokenizer(br.readLine(), ",");
                    while (st1.hasMoreTokens())
                           columns.addElement(st1.nextToken());
                    while ((line = br.readLine()) != null) {
                            StringTokenizer st2 = new StringTokenizer(line, ",");
                            while (st2.hasMoreTokens())
                                    data.addElement(st2.nextToken());
                    }
                    br.close();
            } catch (Exception e) {
                    e.printStackTrace();
            }
    }

    public int getRowCount() {
            return data.size() / getColumnCount();
    }

    public int getColumnCount() {
            return columns.size();
    }

    public Object getValueAt(int rowIndex, int columnIndex) {
            return (String) data.elementAt((rowIndex * getColumnCount())
                            + columnIndex);
    }
}
}

Таким образом я получил данные из файла. Теперь, когда я делаю JTable и устанавливаю модель, используя table.setModel(MyTableModel). Я получаю NullPointerException.

ПРОДОЛЖЕНИЕ:

Данные текстового файла отображаются в JTable, но JTable также содержит несколько дополнительных строк с некоторыми ненужными данными, и когда я нажимаю на эти строки java.lang.ArrayIndexOutOfBoundsException: 180 >= 180, возникает это исключение. Однако я обнаружил, что есть некоторые проблемы с линией

public Object getValueAt(int rowIndex, int columnIndex) {
        return (String) data.elementAt((rowIndex * getColumnCount()) + columnIndex);
}

Но не знаю, в чем проблема. Пожалуйста, помогите.


person Nidhi    schedule 06.12.2012    source источник


Ответы (2)



Данные из текстового файла можно добавить в JTable также с помощью DefaultTableModel. это простой и эффективный способ сделать это.

         FileInputStream fis = new FileInputStream("sample.config");
        BufferedReader br1 = new BufferedReader(new InputStreamReader(fis));
        DefaultTableModel dtm= new DefaultTableModel(0,6);  
    // (for each line in file)
    while ((line = br1.readLine()) != null) 
          {
    dtm.addRow(line.split(" ")); 
     }
    br.close();
    dtm.setColumnIdentifiers(new Object[] { "Attribute"," #","Position",         "Transformation","Assignment","Field","Constant" });
person Nidhi    schedule 11.12.2012