我在使用JavaFX时遇到问题,并且正确地将表中的选定行添加到新列表中。问题是它会在列表中添加一个项目,但每次单击该按钮时都会覆盖该项目。我希望它以这种方式工作:列表的当前状态+下一个记录和下一个... 我不知道怎么解决这个问题。 贝琪我粘贴了代码
@FXML
void getTheValueFromTable() {
Materials selectItem = TableId.getSelectionModel().getSelectedItem();
listOfChooseMaterial = FXCollections.observableArrayList();
listOfChooseMaterial.add(selectItem);
}
@FXML
void viewList() {
System.out.println("size list" + listOfChooseMaterial.size());
for (Materials material : listOfChooseMaterial) {
System.out.println(material.getNameM());
System.out.println(material.getPriceM());
}
}
在第一种方法中,我从tablevView
/ arrayList
获取一个值,在第二种方法中,我尝试显示列表中的所有记录,但我仍然有一个。尽管多次调用该方法(单击按钮)。
所有类的代码
@FXML
private TableView<Materials> TableId;
@FXML
private Button butt2;
@FXML
private TableColumn<?, ?> NameId;
@FXML
private TableColumn<?, ?> PriceId;
@FXML
private TableColumn<?, ?> TypeId;
@FXML
private TableColumn<?, ?> WydId;
@FXML
private Button butt1;
@FXML
private Button butt3;
ObservableList<Materials> listOfChooseMaterial;
@FXML
private void initialize() {
configure();
TableId.getSelectionModel().getSelectedItem();
loadProjectsToTableView();
}
public List<Materials> getAllMaterials() {
TypedQuery<Materials> creareQuery = entityManager.createQuery("select m from Materials m", Materials.class);
List<Materials> resultMaterialsList = creareQuery.getResultList();
entityManager.close();
entityManagerFactory.close();
return resultMaterialsList;
}
public void configure() {
NameId.setCellValueFactory(new PropertyValueFactory<>("nameM"));
PriceId.setCellValueFactory(new PropertyValueFactory<>("priceM"));
TypeId.setCellValueFactory(new PropertyValueFactory<>("typeM"));
WydId.setCellValueFactory(new PropertyValueFactory<>("preformanceM"));
}
public void loadProjectsToTableView() {
TableId.getItems().clear();
ObservableList<Materials> listOfMaterials;
listOfMaterials = FXCollections.observableArrayList(getAllMaterials());
TableId.setItems(listOfMaterials);
}
@FXML
void getTheValueFromTable() {
Materials selectItem = TableId.getSelectionModel().getSelectedItem();
listOfChooseMaterial = FXCollections.observableArrayList();
listOfChooseMaterial.add(selectItem);
}
@FXML
void viewList() {
System.out.println("size list" + listOfChooseMaterial.size());
for (Materials material : listOfChooseMaterial) {
System.out.println(material.getNameM());
System.out.println(material.getPriceM());
}
}
}