2017-06-04 53 views
0

我使用这个类添加项目到tableview javafx,但它只是将最后一行文件添加到tableview。我在这个类中使用ObservableList
我该如何解决这个问题?如何从文件中添加项目到循环

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 

我ShowTicket类:

http://textuploader.com/d0a3e

回答

0

我使用这个类项目加入tableview中JavaFX的,但它只是文件的 最后一行添加到tableview中。

,你在每次迭代覆盖TableView对象的属性items的价值预计:

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); 
    ... 
} 

你还是创建一个contactList对象包含所有行的ShowTicket

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)));  
} 

然后,你可以调用table.setItems(contactList);

+0

这是真的吗? :http://textuploader.com/d05fs,但它不工作。 –

相关问题