私はTXT、このようなファイルがあります:のJava - 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);
、私はすべての単一の行を表示したいが、それはだ、このようになります...:私はこの問題は、Sであることをsuppse
omewhere forループと...
ループのためのあなたのネストされたが、意味をなさないでなければなりません。なぜあなたはこれをやっている? –
(1-)なぜあなたは提案を聞くのがとても難しいですか?参照:https://stackoverflow.com/questions/46122350/java-how-to-fill-jtable-from-text-file#comment79252592_46122350(同じアドバイスを与える別の質問も削除しました)、単純な提案は、 addRow(...)メソッドを使用して、TableModelにArrayを追加します。 _ループ内に2つのステートメントがあります!_ – camickr
これで、データを配列に分割しています。次に、すべてのデータをカスタムオブジェクトにコピーします。次に、ArrayListを反復処理し、カスタムオブジェクトからデータを取り出して2D配列に追加します。次に、DefaultTableModelを作成します。 DefaultTableModelは、ArrayからVectorのVectorにデータをコピーします。不要な複雑なコードと4つのデータがあります。 – camickr