我需要的.txt加載到JTable
與delimiter
,我找到了一個很好的樣本here如何在將txt加載到JTable時顯示空列?
這是樣本數據:
102|Beth Reiser||New York|(212)5558725
111|Dylan Ricci||Syracuse|(315)5554486
116|Brian Gugliuzza||Mamaroneck|(914)5553817
120|Gertrude Stein||Elmsford|(914)5553476
131|Daljit Sinnot||Bohemia|(516)5559811
這是我修改後的代碼:
package Model;
import javax.swing.*;
import javax.swing.table.*;
import javax.swing.event.*;
import java.io.*;
import java.util.*;
public class DataFileTableModel extends AbstractTableModel {
protected Vector data;
protected Vector columnNames ;
protected String datafile;
public DataFileTableModel(String f, String delimiter){
datafile = f;
initVectors(delimiter);
}
public void initVectors(String delimiter) {
String aLine ;
data = new Vector();
columnNames = new Vector();
int lineNum=0;
try {
FileInputStream fin = new FileInputStream(datafile);
BufferedReader br = new BufferedReader(new InputStreamReader(fin));
// extract column names
StringTokenizer st1 =
new StringTokenizer(br.readLine(), delimiter);
while(st1.hasMoreTokens())
columnNames.addElement(st1.nextToken());
// extract data
while ((aLine = br.readLine()) != null && lineNum<20) {
StringTokenizer st2 =
new StringTokenizer(aLine, delimiter);
lineNum++;
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 columnNames.size();
}
public String getColumnName(int columnIndex) {
String colName = "";
if (columnIndex <= getColumnCount())
colName = (String)columnNames.elementAt(columnIndex);
return colName;
}
public Class getColumnClass(int columnIndex){
return String.class;
}
public boolean isCellEditable(int rowIndex, int columnIndex) {
return false;
}
public Object getValueAt(int rowIndex, int columnIndex) {
return (String)data.elementAt((rowIndex * getColumnCount()) + columnIndex);
}
public void setValueAt(Object aValue, int rowIndex, int columnIndex) {
return;
}
}
根據到數據,它會顯示5列,但它只顯示4列,列3因爲空而被跳過。我想顯示所有列到JTable
,我怎麼能實現這個?根據@hovercraft-full-of-eels,當空列位於表格中間時,它會成功顯示,但無法處理背面的空列。如何得到這個?
在背面空列中的數據樣本:
102|Beth Reiser||New York|(212)5558725||||
111|Dylan Ricci||Syracuse|(315)5554486||||
116|Brian Gugliuzza||Mamaroneck|(914)5553817||||
唐不使用StringTokenizer。改用'String#split(...)'。即使是StringTokenizer API也會告訴你這一點。 – 2012-08-10 02:51:23