In Java eine Textdatei in eine TableView importieren?
Hallo, ich habe eine Textdatei, in der Strings und ints vorhanden sind. Diese sind mit einem Komma getrennt. Wie bekomme ich diese in eine TableView?
Ich habe bisher einen Ansatz, bekomme es aber nicht zum Laufen.
public class Main extends Application {
@Override
public void start(Stage primaryStage) throws IOException {
HBox root = new HBox();
root.getChildren().add(readFile());
Scene scene = new Scene(root, 700, 700);
scene.getStylesheets().add(getClass().getResource("application.css").toExternalForm());
primaryStage.setScene(scene);
primaryStage.show();
}
public TableView readFile() throws IOException {
ObservableList<Teams> data = FXCollections. observableArrayList();
TableView<Teams> table = new TableView<>(data);
TableColumn<Teams, String> teamCol = new TableColumn<>("Mannschaft");
teamCol.setCellValueFactory(new PropertyValueFactory<>("team"));
TableColumn<Teams, Integer> dayOneCol = new TableColumn<>("Spieltag 1");
dayOneCol.setCellValueFactory(new PropertyValueFactory<>("placeDayOne"));
TableColumn<Teams, Integer> dayTwoCol = new TableColumn<>("Spieltag 2");
dayTwoCol.setCellValueFactory(new PropertyValueFactory<>("placeDayTwo"));
TableColumn<Teams, Integer> dayThreeCol = new TableColumn<>("Spieltag 3");
dayThreeCol.setCellValueFactory(new PropertyValueFactory<>("placeDayThree"));
TableColumn<Teams, Integer> dayFourCol = new TableColumn<>("Spieltag 4");
dayFourCol.setCellValueFactory(new PropertyValueFactory<>("placeDayFour"));
table.getColumns().addAll(teamCol, dayOneCol, dayTwoCol, dayThreeCol, dayFourCol);
table.setMinWidth(700);
FileReader reader = new FileReader("res/LineChartData.txt");
BufferedReader br = new BufferedReader(reader);
String lineRead;
while ((lineRead = br.readLine()) != null) {
String[] segments = lineRead.split(", ");
data.add(new Teams(
segments[0],
Integer. parseInt(segments[1]),
Integer. parseInt(segments[2]),
Integer. parseInt(segments[3]),
Integer. parseInt(segments[4])));
}
br.close();
return table;
}
public void init() throws Exception {
super.init();
}
public void stop() throws Exception {
super.stop();
}
public static void main(String[] args) {
launch(args);
1 Antwort

Von gutefrage auf Grund seines Wissens auf einem Fachgebiet ausgezeichneter Nutzer
Java, Programmieren & Softwareentwicklung
bekomme es aber nicht zum laufen..
Was heißt das konkret?
Allgemein ein paar Tipps:
- Deine Methode readFile() ist zu lange und tut zuviele Dinge. Du machst dir das Leben leichter, wenn du zumindest die Aspekte "Datei lesen" und "Tabelle befüllen" trennst. Damit kannst du diese Dinge auch getrennt testen.
- Der Dateiname ist hartkodiert und relativ. Damit wird also immer dieselbe Datei relativ zum Ausführungsverzeichnis gelesen (das ist nicht unbedingt das Verzeichnis, in dem das Programm ist!). Willst du das so?
- Das ganze Dateilesen ist umständlicher als nötig und im uralten Stile vor Java 7 gelöst (und das nicht ganz korrekt und ohne Beachtung von Encodings). Schau dir die Klasse java.nio.Files an, etwa die Methode readAllLines(). Kürzer, einfacher, klar definiertes Verhalten und weniger fehleranfällig.