JavaFx在更新其行数据后删除并更新TableView

时间:2016-11-23 08:37:52

标签: java javafx javafx-8

你好我是一个javaFx开发人员,我正在研究桌面应用程序我遇到了问题,我必须从另一个控制器清除和更新TableView我试着调用另一个的clearTable()函数控制器但它不会从tableview中删除所有数据所以如何清除表中的所有行

第一控制器

// Add Product Data To Table View From Database    
public void addProductDatabaseFromTableView() {

    try {
        //addProductTable.setItems(data);
        ResultSet resultSet = addNewProductModelObject.getAllProduct();
        while (resultSet.next()) {

            AddProduct addProduct = new AddProduct(resultSet.getString("Product_Code"), resultSet.getString("Product_Name"), resultSet.getInt("Quanlity"), resultSet.getString("Manufactured_date"), resultSet.getString("Expired_date"));
            data.add(addProduct);
        }
    } catch (SQLException ex) {
        Logger.getLogger(AddNewProductController.class.getName()).log(Level.SEVERE, null, ex);
    }
    System.out.println(data);
}

第二控制器

public void UpdateProductAction( ActionEvent actionEvent ){
    //System.out.println("UpdateProductAction");
    productModelObject.setProductName(ProductName.getText());
    productModelObject.setProductCode(getProductCode());
    productModelObject.setPrice(Integer.parseInt(RetailPrice.getText()));
    productModelObject.setQuanlity(Integer.parseInt(Quanlity.getText()));
    productModelObject.setManufactureDate(ManuDate.getValue().toString());
    productModelObject.setExpiredDate(ExpDate.getValue().toString());

    boolean checkUpdate = productModelObject.updateProductData();

    if ( checkUpdate ) {
        //System.out.println(checkUpdate);

        //addNewProductController.ClearTableData();
        addNewProductController.addProductDatabaseFromTableView();
        Stage stage = (Stage) BtnClose.getScene().getWindow();
        stage.close();
    }
}

请帮助

1 个答案:

答案 0 :(得分:0)

您可以使用ObservableList并使用方法setItems(listName);

然后简单清除observable中的所有项目,更改将反映在表格中。

  • 我是怎么做到的?

Here是一个完整的教程

同样this教程对于下一个问题也是一个非常好的开始。

  • 如何从其他控制器访问控制器?

使用'MVP'或'MVC'模式,将实例从一个'控制器'添加到另一个'控制器'。