将tableView中的选定元素添加到observableArrayList时出错JavaFX

时间:2017-05-31 18:10:28

标签: java javafx

我在使用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());
    }

}

}

0 个答案:

没有答案