Как использовать метод в том же классе в другом методе, который требует другого параметра - PullRequest
1 голос
/ 23 апреля 2019

Я пытаюсь минимизировать количество кода, необходимого для нажатия кнопки, но, поскольку у меня есть изображение на каждой кнопке, если пользователь нажимает на изображение, ему также необходимо перейти на соответствующую страницу.Есть ли способ, которым я могу вызвать тот же метод из кнопки не изображения (которая является ActionEvent и изображение имеет параметр MouseEvent)

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

    @FXML
    private void clickedNewPlayer(ActionEvent event) {
        try {
            ((Node) event.getSource()).getScene().getWindow().hide();
            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("New or Edit Player Screen.fxml"));
            Parent root1 = (Parent) fxmlLoader.load();
            Stage stage = new Stage();
            stage.setScene(new Scene(root1));
            stage.show();
        } catch (IOException e) {
            System.out.println("Error in opening window" + e);
        }
    }

    @FXML
    private void clickedNewPlayerImage(MouseEvent event) {
        try {
            ((Node) event.getSource()).getScene().getWindow().hide();
            FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("New or Edit Player Screen.fxml"));
            Parent root1 = (Parent) fxmlLoader.load();
            Stage stage = new Stage();
            stage.setScene(new Scene(root1));
            stage.show();
        } catch (IOException e) {
            System.out.println("Error in opening window" + e);
        }
    }

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

1 Ответ

0 голосов
/ 23 апреля 2019

Все события JavaFX являются потомками javafx.event.Event; отсюда и метод getSource() 1 . Поскольку источником события является единственное, что вам нужно из параметра, вы можете просто иметь один метод, чей единственный тип параметра равен Event. Затем настройте onAction и onMouseClicked для использования этого метода в файле FXML.

Другой вариант - использовать третий метод, который обрабатывает отображение диалогового окна «новый или редактировать игрока». Тогда вам просто нужно, чтобы ваши методы обработчика событий вызывали этот третий метод.


1. Метод getSource() на самом деле происходит от java.util.EventObject, который расширяется Event. Но поскольку мы используем JavaFX, Event следует считать вершиной иерархии.

...