2017-06-04 6 views
0

Ich verwende diese Klasse, um Elemente zu Tableview javafx hinzuzufügen, aber es fügt nur die letzte Zeile der Datei zu Tableview hinzu.
Ich benutze ObservableList in dieser Klasse
Wie kann ich dieses Problem lösen?Hinzufügen von Element zu TableView aus Datei mit Schleife

public class MyTicket { 
String name; 
@FXML 
private Button back;  
@FXML 
private TableView<ShowTicket> table;  
@FXML 
private TableColumn<ShowTicket, String> origin; 
@FXML 
private TableColumn<ShowTicket, String> goal;  
@FXML 
private TableColumn<ShowTicket, String> date;  
public void addName(String userName){ 
    name= userName; 
} 
public void adddata(){  
    String originFile= name + "\\" +name + "origin" + ".txt"; 
    String goalFile= name + "\\" +name + "goal" + ".txt"; 
    String dateFile= name + "\\" +name + "date" + ".txt";  
     try {   
      BufferedReader inputOrigin= new BufferedReader(new FileReader(originFile)); 
      BufferedReader inputGoal= new BufferedReader(new FileReader(goalFile)); 
      BufferedReader inputDate= new BufferedReader(new FileReader(dateFile)); 
      String line1= inputOrigin.readLine(); 
      String line2= inputGoal.readLine(); 
      String line3= inputDate.readLine(); 
      ArrayList<String> or= new ArrayList<>(); 
      ArrayList<String> go= new ArrayList<>(); 
      ArrayList<String> da= new ArrayList<>(); 
      while(line1 != null){     
       or.add(line1); 
       go.add(line2); 
       da.add(line3);     
       line1= inputOrigin.readLine(); 
       line2= inputGoal.readLine(); 
       line3= inputDate.readLine(); 
      } 
      int i= or.size();    
      for(int j=0; j<i; j++){     
       ObservableList<ShowTicket> contactList= FXCollections.observableArrayList(
         new ShowTicket(or.get(j), go.get(j), da.get(j))); 
       table.setItems(contactList); 
       origin.setCellValueFactory(new PropertyValueFactory<>("firstName")); 
       goal.setCellValueFactory(new PropertyValueFactory<>("lastName")); 
       date.setCellValueFactory(new PropertyValueFactory<>("cellPhone")); 
      }        
       inputOrigin.close(); 
       inputGoal.close(); 
       inputDate.close(); 
     } 
     catch (FileNotFoundException e){     
      e.printStackTrace(); 
     } 
     catch (IOException e) { 
      e.printStackTrace(); 
     } 
}//adddata 

meine ShowTicket Klasse:

http://textuploader.com/d0a3e

Antwort

0

Ich benutze diese Klasse Artikel hinzufügen zu Tableview javafx aber die Tableview letzte Zeile der Datei nur hinzufügen.

Es wird erwartet, wie Sie den Wert der Eigenschaft items des TableView Objekt bei jeder Iteration überschreiben:

for(int j=0; j<i; j++){     
    ... 
    ObservableList<ShowTicket> contactList= FXCollections.observableArrayList(
         new ShowTicket(or.get(j), go.get(j), da.get(j))); 
    table.setItems(contactList); 
    ... 
} 

Sie sollten vielmehr schaffen ein contactList Objekt, das die ShowTicket aller Zeilen enthält.

ObservableList<ShowTicket> contactList = FXCollections.observableArrayList(); 
for(int j=0; j<i; j++){       ... 
    contactList.addAll(FXCollections.observableArrayList(
         new ShowTicket(or.get(j), go.get(j), da.get(j)));  
} 

Dann könnten Sie table.setItems(contactList); aufrufen.

+0

Ist das wahr? : http://textuploader.com/d05fs, aber es ist nicht funktionieren. –

Verwandte Themen