我正在创建一个 JavaFX 应用程序。我可以启动应用程序并登录,但是当我尝试访问客户场景时,出现以下错误:(提前对所有代码和错误表示歉意;不想遗漏任何内容)这是 CustomersScene.fxml:<?xml version="1.0" encoding="UTF-8"?><?import javafx.scene.control.Button?><?import javafx.scene.control.Label?><?import javafx.scene.control.TableColumn?><?import javafx.scene.control.TableView?><?import javafx.scene.layout.AnchorPane?><?import javafx.scene.layout.HBox?><?import javafx.scene.layout.VBox?><?import javafx.scene.text.Font?><AnchorPane id="AnchorPane" prefHeight="591.0" prefWidth="475.0" xmlns="http://javafx.com/javafx/11.0.1" xmlns:fx="http://javafx.com/fxml/1" fx:controller="c195.CustomersSceneController"> <children> <VBox layoutY="51.0" prefHeight="541.0" prefWidth="500.0"> <children> <TableView fx:id="customerTableView" prefHeight="470.0" prefWidth="500.0"> <columns> <TableColumn fx:id="customerTableNameTableColumn" prefWidth="75.0" text="Name" /> <TableColumn fx:id="customerTableAddressTableColumn" prefWidth="302.0" text="Address" /> <TableColumn fx:id="customerTablePhoneNumberTableColumn" minWidth="0.0" prefWidth="122.0" text="Phone Number" /> </columns> </TableView> <HBox alignment="CENTER" prefHeight="100.0" prefWidth="200.0" spacing="100.0"> <children> <Button fx:id="addCustomerButton" mnemonicParsing="false" onAction="#addCustomerButtonPushed" prefHeight="30.0" prefWidth="60.0" text="Add" /> <Button fx:id="modifyCustomerButton" mnemonicParsing="false" onAction="#modifyCustomerButtonPushed" prefHeight="30.0" prefWidth="60.0" text="Modify" /> <Button fx:id="deleteCustomerButton" mnemonicParsing="false" onAction="#deleteCustomerButtonPushed" prefHeight="30.0" prefWidth="60.0" text="Delete" /> </children>该错误表明它找不到事件处理程序。我不知道为什么,因为我已将 @FXML 附加到该函数。我还尝试将函数公开(fxml 文档仍然建议这两个函数,该文档在第 27 行显示错误 - > #deleteCustomerButtonPushed) 我已检查所有导入语句以确保使用 JavaFX 版本。
3 回答
开满天机
TA贡献1786条经验 获得超13个赞
您收到的 IncationTargetException 意味着系统正在尝试查找特定方法,但无法找到合适的候选方法。正如错误所示:“事件处理程序不在命名空间中”。
问题来自于你的方法的签名:
@FXML private void deleteCustomerButtonPushed(Customer customer) {
//...
}
参数应该像ActionEvent其他方法一样,而不是Customer.
@FXML private void deleteCustomerButtonPushed(ActionEvent e) {
//...
}
眼眸繁星
TA贡献1873条经验 获得超9个赞
也可能是由于
使用
import java.awt.event.ActionEvent;
代替
import javafx.event.ActionEvent;
叮当猫咪
TA贡献1776条经验 获得超12个赞
我收到此错误的原因是我错过了@FXML
方法声明
是这样的
private void onCheckboxToggle(ActionEvent event) {
添加了@FXML
@FXML private void onCheckboxToggle(ActionEvent event) {
我的自定义组件(没什么特别的):
<CheckBox fx:id="completed" onAction="#onCheckboxToggle" />
添加回答
举报
0/150
提交
取消