title: how to pass data from parsed text file and insert the values to ObservableList in javafx?
body: <p>content of text file </p>
  
  <pre><code>    gr.spinellis.ckjm.ClassVisitor 13 2 0 14 74 34 2 9
  
      gr.spinellis.ckjm.ClassMetricsContainer 3 1 0 3 18 0 2 2
  
      gr.spinellis.ckjm.MetricsFilter 7 1 0 6 30 11 2 5
  
      gr.spinellis.ckjm.PrintPlainResults 2 1 0 2 8 0 1 2
  
      gr.spinellis.ckjm.MethodVisitor 11 2 0 21 40 0 1 8
  
      gr.spinellis.ckjm.CkjmOutputHandler 1 1 0 1 1 0 3 1
  </code></pre>
  
  <p>i am parsing text file and then i want to view the values in organized way ,</p>
  
  <p>the parsing works well , now i want to put the values i get from text file to TableView .</p>
  
  <p>this is my code </p>
  
  <pre><code>package show;
     import java.io.BufferedReader;
     import java.io.IOException;
     import java.nio.charset.StandardCharsets;
     import java.nio.file.Files;
     import java.nio.file.Path;
     import java.nio.file.Paths;
     import java.util.ArrayList;
     import java.util.List;
     import javafx.application.Application;
     import javafx.beans.property.SimpleDoubleProperty;
     import javafx.beans.property.SimpleIntegerProperty;
     import javafx.beans.property.SimpleStringProperty;
     import javafx.collections.FXCollections;
     import javafx.collections.ObservableList;
     import javafx.event.Event;
     import javafx.event.EventHandler;
     import javafx.scene.Group;
     import javafx.scene.Scene;
     import javafx.scene.chart.PieChart;
     import javafx.scene.control.TableColumn;
     import javafx.scene.control.TableView;
     import javafx.scene.control.TableView.TableViewSelectionModel;
     import javafx.scene.control.cell.PropertyValueFactory;
     import javafx.scene.layout.VBox;
     import javafx.stage.Stage;
  
         public class show_TableView extends Application {
  
          public TableView &lt; Metrics &gt; tableView = new TableView&lt;Metrics&gt;();
         private ObservableList&lt; Metrics &gt; dataList =   FXCollections.observableArrayList(
  
         // /do something like this  new Metrics(name,WMC,DIT,NOC ,CBO,RFC,LCOM , Ce, NPM),
         // i want to add Metrics ADDED DYNAMICALLY after file is parsed
  
         );
  
           ObservableList&lt;PieChart.Data&gt; pieChartData = FXCollections
                         .observableArrayList(
                                 new PieChart.Data("CBO", m.getCBO()),
                                 new PieChart.Data("Ce", m.getCe()),
                                 new PieChart.Data("DIT", m.getDIT()),
                                 new PieChart.Data("LCOM", m.getLCOM()),
                                 new PieChart.Data("NOC", m.getNOC()),
                                 new PieChart.Data("NPM", m.getNPM()),
                                 new PieChart.Data("WMC", m.getWMC()));
                 c.setData(pieChartData);
  
  
  
  
  
  
  
           public static void main(String[] args) {
               launch(args);
           }
  
      @Override
     public void start(Stage primaryStage) {
  
         primaryStage.setTitle("java-buddy.blogspot.com");
         Group root = new Group();
  
         TableColumn name = new TableColumn("name");
         name.setCellValueFactory(new PropertyValueFactory&lt;Metrics, String&gt;(
                 "name"));
  
         TableColumn WMCCol = new TableColumn("WMC");
         WMCCol.setCellValueFactory(new PropertyValueFactory&lt;Metrics, Double&gt;(
                 "WMC"));
  
         TableColumn DITCol = new TableColumn("DIT");
         DITCol.setCellValueFactory(new PropertyValueFactory&lt;Metrics, Double&gt;(
                 "DIT"));
  
         TableColumn NOCCol = new TableColumn("NOC");
         NOCCol.setCellValueFactory(new PropertyValueFactory&lt;Metrics, Double&gt;(
                 "NOC"));
         TableColumn CBOCol = new TableColumn("CBO");
         CBOCol.setCellValueFactory(new PropertyValueFactory&lt;Metrics, Double&gt;(
                 "CBO"));
         TableColumn RFCCol = new TableColumn("RFC");
         RFCCol.setCellValueFactory(new PropertyValueFactory&lt;Metrics, Double&gt;(
                 "RFC"));
         TableColumn LCOMCol = new TableColumn("LCOM");
         LCOMCol.setCellValueFactory(new PropertyValueFactory&lt;Metrics, Double&gt;(
                 "LCOM"));
         TableColumn ceCol = new TableColumn("Ca");
         ceCol.setCellValueFactory(new PropertyValueFactory&lt;Metrics, Double&gt;(
                 "ce"));
         TableColumn NPMCol = new TableColumn("NPM");
         NPMCol.setCellValueFactory(new PropertyValueFactory&lt;Metrics, Double&gt;(
                 "NPM"));
  
         primaryStage.setScene(new Scene(root, 200, 200));
         primaryStage.show();
  
         List&lt;Metrics&gt; metric = readMetricFromCSV("C:\\Users\\pavi\\Desktop\\11.txt");
         // let's print all the metric read from CSV file
         for (Metrics m : metric) {
             System.out.println(m);
  
         }
  
         tableView.setItems(FXCollections.observableArrayList(metric));
         tableView.getColumns().addAll(name, WMCCol, DITCol, NOCCol, CBOCol,
                 RFCCol, LCOMCol, ceCol, NPMCol);
  
         VBox vBox = new VBox();
         vBox.setMaxSize(600, 600);
         vBox.setSpacing(10);
         PieChart c = new PieChart();
         tableView.setOnMouseClicked(new EventHandler&lt;Event&gt;() {
  
             @Override
             public void handle(Event event) {
                 c.setData(FXCollections.emptyObservableList());
                 TableViewSelectionModel&lt;Metrics&gt; tableViewSelectionModel = tableView
                         .selectionModelProperty().get();
                 Metrics m = tableViewSelectionModel.getSelectedItem();
                 if(m==null){
                     return;
                 }
                 ObservableList&lt;PieChart.Data&gt; pieChartData = FXCollections
                         .observableArrayList(
                                 new PieChart.Data("CBO", m.getCBO()),
                                 new PieChart.Data("Ce", m.getCe()),
                                 new PieChart.Data("DIT", m.getDIT()),
                                 new PieChart.Data("LCOM", m.getLCOM()),
                                 new PieChart.Data("NOC", m.getNOC()),
                                 new PieChart.Data("NPM", m.getNPM()),
                                 new PieChart.Data("WMC", m.getWMC()));
                 c.setData(pieChartData);
             }
         });
         vBox.getChildren().add(tableView);
         vBox.getChildren().add(c);
  
         root.getChildren().add(vBox);
  
     }
  
     public List&lt;Metrics&gt; readMetricFromCSV(String fileName) {
  
         List&lt;Metrics&gt; metricsss = new ArrayList&lt;&gt;();
  
         Path pathToFile = Paths.get(fileName);
         // create an instance of BufferedReader
         // using try with resource, Java 7 feature to close resources
         try (BufferedReader br = Files.newBufferedReader(pathToFile,
                 StandardCharsets.US_ASCII)) {
             // read the first line from the text file
             String line = br.readLine();
             while (line != null &amp;&amp; !line.isEmpty()) { // loop until all lines
                                                         // are read
                 String[] attributes = line.split(" "); // the file, using a
                                                         // comma as the
                                                         // delimiter
                 Metrics valueOfMetric = createMetric(attributes);
                 metricsss.add(valueOfMetric); // adding metric into ArrayList
                 // skip empty line
                 // line.isEmpty() || line.trim().equals("") ||
                 // line.trim().equals("\n"))
                 br.readLine();
                 line = br.readLine();
             }
  
         } catch (IOException ioe) {
             ioe.printStackTrace();
         }
  
         return metricsss;
     }
           private   Metrics createMetric(String[] metadata) {
             String name = metadata[0];
             int WMC = Integer.parseInt(metadata[1]);
             int DIT = Integer.parseInt(metadata[2]);
             int NOC = Integer.parseInt(metadata[3]);
             int CBO = Integer.parseInt(metadata[4]);
             int RFC = Integer.parseInt(metadata[5]);
             int LCOM= Integer.parseInt(metadata[6]);
             int Ce  = Integer.parseInt(metadata[7]);
             int NPM = Integer.parseInt(metadata[8]);
             return new Metrics(name,WMC,DIT,NOC,CBO,RFC,LCOM,Ce,NPM);//,cc
         }
  
  
           public class Metrics {
  
             private String name;
             private int WMC;
             private int DIT;
             private int NOC;
             private int CBO;
             private int RFC;
             private int LCOM;
             private int Ce;
             private int NPM;
  
             public Metrics( String name,int WMC,int DIT,int NOC,int CBO,int RFC,int LCOM, int Ce, int NPM) {
  
                 this.name = name;
                 this.WMC = WMC;
                 this.DIT = DIT;
                 this.NOC = NOC;
                 this.CBO = CBO;
                 this.RFC = RFC;
                 this.LCOM = LCOM;
                 this.Ce = Ce;
                 this.NPM = NPM;
             }
  
             public String getName() {
                 return name;
             }
  
             public void setName(String name) {
                 this.name = name;
             }
  
             public int getWMC() {
                 return WMC;
             }
  
             public void setWMC(int WMC) {
                 this.WMC = WMC;
             }
  
             public int getDIT() {
                 return DIT;
             }
  
             public void setDIT(int DIT) {
                 this.DIT = DIT;
             }
  
             public int getNOC() {
                 return NOC;
             }
  
             public void setNOC(int NOC) {
                 this.NOC = NOC;
             }
  
             public int getCBO() {
                 return CBO;
             }
  
             public void setCBO(int CBO) {
                 this.CBO = CBO;
             }
  
             public int getRFC() {
                 return RFC;
             }
  
             public void setRFC(int RFC) {
                 this.RFC = RFC;
             }
  
             public int getLCOM() {
                 return LCOM;
             }
  
             public void setLCOM(int LCOM) {
                 this.LCOM = LCOM;
             }
  
             public int getCe() {
                 return Ce;
             }
  
             public void setCe(int ce) {
                 Ce = ce;
             }
  
             public int getNPM() {
                 return NPM;
             }
  
             public void setNPM(int NPM) {
                 this.NPM = NPM;
             }
  
  
         }
  
  
  
  
         }
  </code></pre>