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