有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何在需要不同参数的另一个方法中使用同一类中的方法

我试图最小化单击按钮所需的代码量,但因为每个按钮上都有一张图片,如果用户单击了图片,那么它也需要转到相应的页面。是否有一种方法可以从非图像按钮调用相同的方法(这是一个ActionEvent,图像的参数为MouseeEvent)

我尝试使用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) 个答案

  1. # 1 楼答案

    所有JavaFX事件都是javafx.event.Event的后代;这就是getSource()方法的来源。由于事件的源似乎是您从参数中需要的唯一内容,因此您可以只使用一个方法,其单个参数类型为Event。然后配置onActiononMouseClicked在FXML文件中使用该方法

    另一个选项是使用第三种方法来显示“新建或编辑播放器”对话框。然后,您只需让事件处理程序方法调用第三个方法


    1。getSource()方法实际上来自java.util.EventObject,它是Event扩展的。但是当我们使用JavaFX时,Event应该被认为是层次结构的顶层