-3
我有这样的txt文件:爪哇 - JTable中显示从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);
我suppse,问题是S omewhere与环...
你的嵌套的for循环就没有任何意义。你为什么做这个? –
(1-)为什么你很难听到建议?请参阅:https://stackoverflow.com/questions/46122350/java-how-to-fill-jtable-from-text-file#comment79252592_46122350(你也删除了另一个问题给出相同的建议),简单的建议是分裂并使用addRow(...)方法将数组添加到TableModel。 _这是循环内的两条语句!!! _ – camickr
现在您正在将数据拆分成一个数组。然后,您将所有数据复制到自定义对象。然后,您遍历ArrayList并从自定义对象中获取数据并将其添加到2D数组中。然后你创建DefaultTableModel。然后DefaultTableModel将把数组中的数据复制到矢量矢量中。您有不必要的复杂代码以及4份数据副本。 – camickr