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

标签 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 个按钮,都有同样的问题

最佳答案

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

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

<小时/>

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

关于java - 如何在另一个方法中使用同一个类中的方法,这需要不同的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55816722/

相关文章:

java - 使用什么工具包可以在绘画中制作多个线程? Swing、GWT、FX、Qt 还是什么?

java - Lucene 索引备份

java - 如何使用 javaFx TriangleMesh 创建这样的形状?

JavaFX - setVisible 隐藏元素但不重新排列相邻节点

java - 有没有办法在 Controller 中初始化变量并在 FXML 中使用它?

java - 尝试部署服务器时找不到database.properties

java - com.sun.xml.bind.v2.runtime.IllegalAnnotationsException : 2 counts of IllegalAnnotationExceptions

Javafx: 链接 fx:id-s

java - 与已打开的 FXML Controller 通信

使用 FXML 的 JavaFX UI 控件架构(Control+Skin)