-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