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

时间:2019-04-23 17:41:54

标签: java javafx fxml

我正在尝试最大程度地减少单击按钮所需的代码量,但是由于每个按钮上都有图片,因此如果用户单击图像,则还需要转到相应的页面。有没有一种方法可以从非图像按钮(这是一个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 :(得分:0)

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

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


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