Javafx 通过单击其他fxml中的按钮清除tableview

Javafx 通过单击其他fxml中的按钮清除tableview,javafx,tableview,Javafx,Tableview,我有一个ordersFXML,它有一个tableview(ordersTable)。当您单击一个按钮时,会弹出另一个付款XML(付款),其中包含一个付款按钮。单击付款按钮后,付款XML关闭。 我的问题在这里。 我希望ordersTable被清除,点击Pay按钮后立即清空 有什么办法吗? 下面是我的代码 OrdersFXMLController.java @FXML private TableView<Orders> tableOrders; @FXML public void c

我有一个ordersFXML,它有一个tableview(ordersTable)。当您单击一个按钮时,会弹出另一个付款XML(付款),其中包含一个付款按钮。单击付款按钮后,付款XML关闭。 我的问题在这里。 我希望ordersTable被清除,点击Pay按钮后立即清空

有什么办法吗? 下面是我的代码

OrdersFXMLController.java

@FXML
private TableView<Orders> tableOrders;


@FXML
public void clearAll(){

    tableOrders.setItems(null);

}
@FXML
private void finilizePayment(ActionEvent event){
// some code here
closeButtonAction();
}

@FXML
private void closeButtonAction(){

    FXMLLoader loader = new FXMLLoader();
    OrdersFXMLController orderController = (OrdersFXMLController)loader.getController();

    orderController.clearAll();
   }
下面是错误代码:

 Exception in thread "JavaFX Application Thread" java.lang.RuntimeException: java.lang.reflect.InvocationTargetException

提前感谢。

总有办法;事实上,你有一些不同的选择

由于您没有发布任何代码,我将对此答案进行一些假设,并仅提供可能的概念,不一定是最好的方法;这完全取决于您如何实现数据模型等

一种方法是在
ordersFXML
控制器(我称之为
ordersController
)中包含一个公共方法,它允许您从
paymentsController
类中清除表:

public void clearOrdersTable() {
    tableOrders.setItems(null);
}
PaymentsController paymentsController = new PaymentsController(this);
完成此操作后,在调用其构造函数时,需要将
ordersController
的引用传递给
paymentsController
类。如果从您的
ordersController
类创建控制器:

public void clearOrdersTable() {
    tableOrders.setItems(null);
}
PaymentsController paymentsController = new PaymentsController(this);
此时,您可以从您的
paymentsController
访问您的
ordersController
,并且您已经设置了一种方法,可以用来清除
表视图中的订单列表。现在,您只需在处理付款后调用该方法:

ordersController.clearOrdersTable();
再次提出了一些假设。如果要用实际的基础列表(应该是)填充orders表,则应清除该列表,而不是将表的项设置为
null

但是,在没有看到代码的情况下,这可能对您不起作用,但有望为您自己的故障排除提供一个良好的起点


为了进一步阅读并帮助自己掌握在不同控制器之间传递值的概念,请查看jewelsea对这个问题的出色回答:。

请发布代码