我有这样的txt文件:
User User 1||Address1|telephonecall|X|drivingdepartment|vehicle|X
User User 2||Address2|telephonecall|X|drivingdepartment|vehicle|X
User User 3||Address3|telephonecall|X|drivingdepartment|vehicle|X
User User 4||Address4|telephonecall|X|drivingdepartment|vehicle|X
我尝试在这样的JTable中显示它,但它只显示最后一行4次(与文本文件中的行数一样多)
public ArrayList<Voznje> ucitajVoznje() {
ArrayList<Voznje> zakazaneVoznje = new ArrayList<Voznje>();
try {
File voznjeFile = new File("src/txt/voznje");
BufferedReader br = new BufferedReader(new FileReader(voznjeFile));
String line = null;
while ((line = br.readLine()) != null) {
String[] split = line.split("\\|");
String imePrezimeMusterije = split[0];
String datumPolaska = split[1];
String adresaPolaska = split[2];
String nacinPorudzbine = split[3];
String vozac = split[4];
String dispecer = split[5];
String vrstaVozila = split[6];
String napomena = split[7];
Voznje novaVoznja = new Voznje(imePrezimeMusterije, datumPolaska, adresaPolaska, nacinPorudzbine, vozac, dispecer, vrstaVozila, napomena);
zakazaneVoznje.add(novaVoznja);
}
} catch (Exception e) {
e.printStackTrace();
}
//System.out.println(zakazaneVoznje);
return zakazaneVoznje;
}
private void initGUI() {
ArrayList<Voznje> zakazaneVoznje = ucitajVoznje();
String[] zaglavlje = new String[] {"Musterija", "Datum", "Adresa", "Rezervacija", "Vozac", "Dispecer", "Vrsta vozila", "Napomena"};
Object[][] prikaz = new Object[zakazaneVoznje.size()][zaglavlje.length];
int a = 0;
for (int i = 0; i < zakazaneVoznje.size(); i++){
for (Voznje v : zakazaneVoznje) {
prikaz[i][0] = v.getImePrezimeMusterije();
prikaz[i][1] = v.getDatumPolaska();
prikaz[i][2] = v.getAdresaPolaska();
prikaz[i][3] = v.getNacinPorudzbine();
prikaz[i][4] = v.getVozac();
prikaz[i][5] = v.getDispecer();
prikaz[i][6] = v.getVrstaVozila();
prikaz[i][7] = v.getNapomena();
}
}
DefaultTableModel tableModel = new DefaultTableModel(prikaz,zaglavlje);
tblVoznje = new JTable(tableModel);
tblVoznje.setRowSelectionAllowed(true);
tblVoznje.setColumnSelectionAllowed(true);
tblVoznje.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
tblVoznje.setDefaultEditor(Object.class, null);
JScrollPane tableScroll = new JScrollPane(tblVoznje);
add(spSkrol);
add(tbTulbar, BorderLayout.NORTH);
add(tableScroll, BorderLayout.CENTER);
我认为问题出现在for循环......
答案 0 :(得分:3)
这是因为您在每次迭代时都使用所有主题填充数据
for (int i = 0; i < zakazaneVoznje.size(); i++){
for (Voznje v : zakazaneVoznje) { // HERE IS THE MISTAKE
prikaz[i][0] = v.getImePrezimeMusterije();
prikaz[i][1] = v.getDatumPolaska();
prikaz[i][2] = v.getAdresaPolaska();
prikaz[i][3] = v.getNacinPorudzbine();
prikaz[i][4] = v.getVozac();
prikaz[i][5] = v.getDispecer();
prikaz[i][6] = v.getVrstaVozila();
prikaz[i][7] = v.getNapomena();
}
}
应该是
for (int i = 0; i < zakazaneVoznje.size(); i++){
Voznje v=zakazaneVoznje.get(i)
prikaz[i][0] = v.getImePrezimeMusterije();
prikaz[i][1] = v.getDatumPolaska();
prikaz[i][2] = v.getAdresaPolaska();
prikaz[i][3] = v.getNacinPorudzbine();
prikaz[i][4] = v.getVozac();
prikaz[i][5] = v.getDispecer();
prikaz[i][6] = v.getVrstaVozila();
prikaz[i][7] = v.getNapomena();
}