我的文本文件包含以下数据:sample.txt
MEMHEAD 1 1 NA SetString srcCode
MEMHEAD 1 2 NA 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);
}
但不知道是什么问题。请帮助。
答案 0 :(得分:2)
您正在向Vectors
添加数据而不对其进行初始化。
Vector data;
Vector columns;
在添加元素之前初始化它们。
Vector data = new Vector();
Vector columns = new Vector();
执行此操作后检查您是否收到NullPointerException。
如果你仍然得到NPE
,那么我怀疑你没有初始化JTable
。所以发布代码让我们知道究竟会发生什么异常。
答案 1 :(得分:0)
也可以使用DefaultTableModel将文本文件中的数据添加到JTable中。这是一种简单而有效的方法。
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" });