Очистка просмотра таблицы нажатием кнопки из другого fxml - PullRequest
0 голосов
/ 11 июня 2018

У меня есть ordersFXML с табличным представлением ( ordersTable ).При нажатии кнопки, которая выскакивает другой paymentFXML (платежи), который содержит payButton .После нажатия payButton paymentFXML закрывается.Моя проблема здесь.Я хочу, чтобы ordersTable очищался, очищался сразу после нажатия кнопки payButton.

Есть ли способ сделать это?Вот мой код ниже.

OrdersFXMLController.java

@FXML
private TableView<Orders> tableOrders;


@FXML
public void clearAll(){

    tableOrders.setItems(null);

}

PaymentsFXMLController.java

@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

Заранее спасибо.

1 Ответ

0 голосов
/ 11 июня 2018

всегда есть способ;на самом деле, у вас есть несколько вариантов для этого.

Поскольку вы не опубликовали ни один из своего кода, я собираюсь сделать некоторые предположения с этим ответом и просто предоставить возможные концепции, не обязательно лучший способ сделать это;все зависит от того, как вы реализовали свою модель данных и т.п.это позволяет вам очистить таблицу от вашего paymentsController класса:

public void clearOrdersTable() {
    tableOrders.setItems(null);
}

После этого вам нужно будет передать ссылку на ordersController вашему классу paymentsController при вызове его конструктора.Если вы создаете контроллер из вашего ordersController класса:

PaymentsController paymentsController = new PaymentsController(this);

На данный момент у вас есть возможность доступа к ordersController из вашего paymentsController, и вы настроили метод, который вы можете использоватьочистить список заказов в вашем TableView.Теперь вам просто нужно вызвать этот метод после обработки платежа:

ordersController.clearOrdersTable();

Опять некоторые предположения.Если вы заполняете свою таблицу заказов фактическим базовым списком (которым вы должны быть), вы должны очистить этот список вместо того, чтобы устанавливать элементы таблицы в null.

Не видя ваш код, однако, это можетне работает для вас, но, надеюсь, даст вам хорошую отправную точку для устранения неполадок.

Для дальнейшего прочтения и понимания концепции передачи значений между различными контроллерами, посмотрите отличный ответ jewelsea на этот вопрос: Передача параметров JavaFX FXML .

...