JTable - pobieranie danych z pliku txt

0

Mam pobieranie danych z tabeli:

setDefaultCloseOperation(EXIT_ON_CLOSE);

		    Object[][] data = { { "Chopin Fryderyk",  "M", 1789, "2020-10-10" }, 
		                        { "Kopernik Mikołaj", "M", 2900, "2020-10-10" },
		                        { "Słowacki Juliusz", "M",  2000, "2020-10-10" },
		                        { "Szymborska Wisława", "K", 5200, "2020-10-10" },
		                        { "Polański Roman", "M", 3000, "2020-10-10" },
		                        { "Skłodowska-Curie Maria", "K",  2000, "2020-10-10" },
		                        { "Modrzejewska Helena", "K", 2000, "2020-10-10" },
		                      };
		    // Nazwy kolumn
		    String[] nazwyKolumn = { "Nazwa", "Płeć", "Wynik","Data" };
		        
		    JTable tab = new JTable(data, nazwyKolumn);
		    tab.setAutoCreateRowSorter(true);
		    tab.disable();
		    add (new JScrollPane(tab));
		    pack();
		    setVisible(true);

A teraz chcę aby dane pobierało z pliku txt - dane oddzielone średnikami - ;
i nie mam pomysłu jak to zrobić, próbowałam zaadaptować rozwiązanie z Java Swing jTable wczytywanie danych z pliku txt do jTable , ale nie wiem jak to rozgryźć.. ktoś coś podpowie?

0

Po 1

 // Nazwy kolumn
String[] nazwyKolumn 

Serio?

Po 2, z czym dokładnie masz problem, co spróbowałaś zrobić do tej pory i czemu to nie działa - leci jakiś błąd, nie kompiluje się?
Po 3, sprecyzuj o co dokładnie chodzi, najlepiej podaj treść zadania, bo widać ze to jakieś zadanie na studia. Domyślam się, że potrzebujesz po prostu wczytać danę z pliku txt do JTable? No i rozumiem, że część kodu który masz do tej pory działa i wyświetla Ci tabelke z danymi jakie wysłałaś wyżej? Zostaje więc tylko przeczytać plik tekstowy i umieścić jego zawartość w tym Object[][] data?
W takim razie - pierwszy lepszy link z googla https://knpcode.com/java-programs/how-to-read-delimited-file-in-java/

0

Jeśli stawiasz pytanie JTable + pobieranie, to na pewno źle patrzysz na problem, trzeba dzielić.

  1. Wczytywanie takie samo, jak by było z programu konsolowego (i Jtable nie istnieje w tym problemie)
  2. uczynienie tego odstępnym dla JTable

Co do 2 WIODĄCE jest zapoznanie się Modelem do tej JTable
https://www.google.com/search?client=firefox-b-d&q=jtable+model+java

WARNING: tamten wątek prowadzi na manowce, żałosne wtykanie komórek do table

0

Miałam przedstawić wyniki z pliku który ma mniej więcej budowe:
nazwa;wynik;data

musi to posortować i wyświetlić
poradziłam sobie inaczej....

Dane z pliku - każdą listę dodaję do listy:

ArrayList<Tab> data = new ArrayList<Tab>();
		Scanner scan = new Scanner(new File("wyniki.txt"));

		while (scan.hasNextLine()) {
			linia = scan.nextLine();
			dane = linia.split(";");
			data.add(new Tab(dane[0], Integer.parseInt(dane[1]),
					LocalDate.parse(dane[2])));
		}
		scan.close();
		Collections.sort(data, new Comparator<Tab>() {
			@Override
			public int compare(Tab o1, Tab o2) {
				return o2.getPkt() - o1.getPkt();
			}
		});

i buduję Sting:

		for (Tab str : data) { wyniki += i + "\t" + str.getNazwa() + "\t" + str.getPkt() + "\t" +  str.getDate()+ "\n"; }

tylko teraz mam problem bo

for (String line : tab.split("\n")) {
				int tabLen = fontMetrics.stringWidth(line);
				g2.drawString(line, (sz/ 2) - (tabLen / 2), (sz/ 6) + (tabH* l));
				l++;
			}

ignoruje mi znaki tabulacji...
jak się zamieni je na spacje - tekst mam ładnie wyśrodkowany - więc w sumie "działa"... tylko nie wiem jak i czy można zmusić by drawString robił poprawne odstępy

1 użytkowników online, w tym zalogowanych: 0, gości: 1