我使用此类向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课程:
答案 0 :(得分:0)
我使用这个类向tableview javafx添加项目,但它只是添加了 最后一行文件到tableview。
在每次迭代时覆盖items
对象的属性TableView
的值是预期的:
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
的{{1}}对象。
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)));
}
。