我是JavaFX的新手,目前在使用onAction事件和不同包中的类时遇到一些麻烦。

这是包树:

这是不起作用的代码示例:

<?import java.net.*?>
<?import javafx.geometry.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>
<?import javafx.scene.text.*?>

<GridPane fx:controller="GUIController.AccueilController"
    xmlns:fx="http://javafx.com/fxml" alignment="center" hgap="10" vgap="10">

    ...

    <HBox spacing="10" alignment="bottom_right"
        GridPane.columnIndex="1" GridPane.rowIndex="4">
        <Button text="Se connecter" onAction="#handleSubmitButtonAction"/>
    </HBox>

    ...

</GridPane>

错误由发送:
onAction="#handleSubmitButtonAction"

说:“无法访问处理程序方法。公开或使用@FXML进行注释”

这是AccueilController.java文件:
package GUIController;

import java.awt.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.text.Text;

public class AccueilController {

    @FXML private Text actiontarget;

    @FXML protected void handleSubmitButtonAction(ActionEvent event) {
        actiontarget.setText("Sign in button pressed");
    }

}

如您所见,已经添加了@FXML标记,所以我不知道问题出在哪里。这可能有点愚蠢,但我真的无法弄清楚。

顺便说一句,没有onAction行,代码运行正常。

感谢你们 !

最佳答案

尝试将import java.awt.event.ActionEvent替换为import javafx.event.ActionEvent。 JavaFX可能尝试使用其他类型的参数调用您的方法,并且找不到合适的重载方法。

10-02 21:59