不同包中的 FXML 和 Controller - Button onAction 问题
FXML and Controller in different packages - Button onAction issue
我是 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"
说:"Handler method is not accessible. Make public, or annotate with @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 javafx.event.ActionEvent
替换 import java.awt.event.ActionEvent
。 JavaFX 可能会尝试使用另一种类型的参数调用您的方法,但找不到合适的重载方法。
我是 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"
说:"Handler method is not accessible. Make public, or annotate with @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 javafx.event.ActionEvent
替换 import java.awt.event.ActionEvent
。 JavaFX 可能会尝试使用另一种类型的参数调用您的方法,但找不到合适的重载方法。