我有一个像这样的文本文件
0786160384|P. K.|Tharindu|912921549v|Colombo|
0711495765|P. K.|Gamini|657414589v|Colombo|
0114756199|H. P.|Weerasigha|657895478v|Kandy|
每个|
分隔数据。我想在jTable
中显示此文件中的数据。以下是我目前的代码。
public class PrintGUI extends javax.swing.JFrame {
File file, tempFile;
FileReader fileReader;
FileWriter fileWriter;
ArrayList ClientList;
Vector data = new Vector();
Vector columns = new Vector();
public PrintGUI() {
initComponents();
this.setIconImage(new ImageIcon(getClass().getResource("/Images/icon.png")).getImage());
file = new File("C:\\Users\\Tharindu\\Documents\\NetBeansProjects\\Geo phonebook\\phonebook.txt");
tempFile = new File("C:\\Users\\Tharindu\\Documents\\NetBeansProjects\\Geo phonebook\\tempphonebook.txt");
}
@SuppressWarnings("unchecked")
// <editor-fold defaultstate="collapsed" desc="Generated Code">
private void initComponents() {
PhoneBookTable.setModel(new javax.swing.table.DefaultTableModel(
new Object [][] {
},
new String [] {
"Phone No", "First Name", "Last Name", "NIC", "City"
}
)
}
private void formWindowOpened(java.awt.event.WindowEvent evt) {
String line = null;
DefaultTableModel dtm = (DefaultTableModel) PhoneBookTable.getModel();
try {
BufferedReader br = new BufferedReader(new FileReader(file));
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();
dtm.addRow(new Object[]{columns, data});
} catch (Exception e) {
e.printStackTrace();
}
}
问题是,当我运行程序时,它会在.txt文件中显示整行,而不是每列的单个数据。 更具体地说,它显示了整行
[0786160384, P. K., Tharindu, 912921549v, Colombo]
在第一行第一列和
[0711495765, P. K., Gamini, 657414589v, Colombo, 0114756199, H. P., Weerasigha, 657895478v, Kandy]
在第一行第二列
相反,我希望它显示每个单元格的单个数据。有人可以帮忙吗?
答案 0 :(得分:0)
您只需拨打addRow
一次,因此表格模型中只会添加一行。
您需要在文件读取循环中移动该语句。
您从文件中读取的每一行都对应于表格中的一行。因此,每次读取一行时都需要调用addRow
,并使用该行的内容调用它。
答案 1 :(得分:0)
终于找到了错误。它应该像
try {
BufferedReader br = new BufferedReader(new FileReader(file));
while ((line = br.readLine()) != null) {
data = new Vector();// this is important
StringTokenizer st1 = new StringTokenizer(line, "|");
while (st1.hasMoreTokens()) {
String nextToken = st1.nextToken();
data.add(nextToken);
System.out.println(nextToken);
}
System.out.println(data);
dtm.addRow(data);//add here
System.out.println(".................................");
}
br.close();
} catch (Exception e) {
e.printStackTrace();
}
}