Cześć,
robię taki mały programik, który pozwala na zapis i odczyt danych (string, int) z pliku txt do JTable. Chodzi o zapis danych, których potrzebuje często, a Excel już nie spisuje się za dobrze.
O ile udało mi się zapisywać z JTable do txt, to z odczytem mam problem. dane zapisane na liście na pewno są odczytywane (pojawiają się w konsoli jak mam System.out.print). Nie wiem, co z tym mogę zrobić.
Nowe dane do JTable zapisuje najpierw do List<String>, potem mam taką metodę addrow (poniżej) i w ten sposób dodaje mi się nowy wiersz w JTable:
public void addRow(List rowData)
{
data.add(rowData);
fireTableRowsInserted(data.size() - 1, data.size() - 1);
}
Tak wygląda funkcja eksportująca dane do pliku txt (zapisują się wszystkie dane, łącznie z nagłówkami):
private void toExcel(JTable table, File file){
try{
BufferedWriter bfw = new BufferedWriter(new FileWriter(file));
for(int i = 0 ; i < table.getColumnCount() ; i++)
{
bfw.write(table.getColumnName(i));
bfw.write("\t");
}
for (int i = 0 ; i < table.getRowCount(); i++)
{
bfw.newLine();
for(int j = 0 ; j < table.getColumnCount();j++)
{
bfw.write((String)(table.getValueAt(i,j)));
bfw.write("\t");;
}
}
bfw.close();
}catch (Exception e1) {
System.out.println("Błąd!"+ e1.getMessage());
}
}
Tak wygląda funkcja odczytująca przy starcie programu dane :
public void importData(File file) {
TableClass model = new TableClass();
List<String> newdata = new ArrayList<String>();
try{
BufferedReader reader = new BufferedReader(new FileReader(file));
String line = null;
while ((line = reader.readLine()) != null)
{
newdata.add(line);
}
model.addRow(newdata);
reader.close();
} catch (IOException ex) {
System.out.println("Błąd!"+ ex.getMessage());
}
}
A tak wywołuję odczyt danych z pliku:
public Table() {
File fileimp = new File("results.txt");
importData(fileimp);
initialize();
}
Dziękuję za pomoc.