My Text file contain data as: sample.txt
MEMHEAD 1 1 NA SetString srcCode
MEMHEAD 1 2 NA SetString memIdnum
LGLNAME 1 5 NA SetString onmfirst
I have created MyClassModel class extending AbstractTableModel as:
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);
}
}
}
In this way I retrieved data from a file. Now when I make a JTable and set model using table.setModel(MyTableModel). I am getting a NullPointerException.
CONTINUED:
The text file data is being displayed in the JTable but JTable also contains some extra rows with some junk data and when I press on those rows
java.lang.ArrayIndexOutOfBoundsException: 180 >= 180 this exception is thrown.
However, I Found out that there is some problem with the line
public Object getValueAt(int rowIndex, int columnIndex) {
return (String) data.elementAt((rowIndex * getColumnCount()) + columnIndex);
}
But dont know what is the problem.Please help.
You are adding data to both
Vectorswith out initializing them.Initialize them before you add elements.
Check after doing this whether you are getting NullPointerException or not.
If still you are getting
NPEthen I doubt that you didn’t initializeJTable. So post code to make us know where exactly exception is coming.