Мой текстовый файл содержит данные в виде: 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);
}
Но не знаю, в чем проблема. Пожалуйста, помогите.