【问题标题】:Can't find Method in handler [duplicate]在处理程序中找不到方法[重复]
【发布时间】:2018-10-16 06:59:33
【问题描述】:

我正在尝试使用 JavaFX 创建一个基本的 UI。问题只是在我的控制器中找不到我的处理程序。

我的 ui.fxml:

<?import java.lang.*?>
<?import java.util.*?>
<?import javafx.scene.*?>
<?import javafx.scene.control.*?>
<?import javafx.scene.layout.*?>

<StackPane id="pane" prefHeight="400.0" prefWidth="600.0" xmlns:fx="http://javafx.com/fxml/1" fx:controller="reldb0.controller.PersonOverviewController">
    <children>
        <Button text="Hinzufügen" onAction="#handleAddClicked" fx:id="addButton" />
        <Button text="Entfernen" onAction="#handleDeleteClicked" fx:id="deleteButton" />
        <TableView fx:id="table">
            <columns>
                <TableColumn fx:id="vorname" prefWidth="100" text="Vorname" />
                <TableColumn fx:id="nachname" prefWidth="100" text="Nachname" />
            </columns>
        </TableView>
    </children>
 </StackPane>

我的控制器类:

package reldb0.controller;

import java.awt.event.ActionEvent;
import java.net.URL;
import java.util.ResourceBundle;
import javafx.fxml.FXML;
import javafx.fxml.Initializable;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.control.TableColumn;
import javafx.scene.control.TableView;
import javafx.scene.control.cell.PropertyValueFactory;
import javafx.scene.layout.StackPane;
import javafx.stage.Stage;
import reldb0.entity.Person;
import reldb0.MockData;

/**
 *
 * @author hnsdi
 */
public class PersonOverviewController implements Initializable{
    @FXML
    private TableView<Person> table;
    @FXML
    private TableColumn<Person, String> vorname;
    @FXML
    private TableColumn<Person, String> nachname;

    @Override
    public void initialize(URL location, ResourceBundle resources) {
        vorname.setCellValueFactory(new PropertyValueFactory<Person, String>("vorname"));
        nachname.setCellValueFactory(new PropertyValueFactory<Person, String>("nachname"));    

        table.getItems().setAll(MockData.persons());
    }  

    @FXML
    private void handleAddClicked(ActionEvent event) {
        StackPane root = new StackPane();

        Scene scene = new Scene(root, 300, 300);

        Stage addWindow = new Stage();
        addWindow.setTitle("Person hinzufügen");
        addWindow.setScene(scene);

        addWindow.show();
    }

    @FXML
    private void handleDeleteClicked(ActionEvent event) {
        //TODO
    }
}

我找不到我的 EventHandler 找不到的问题。我有@FXML Annotations 并且控制器已正确注册,因为表中填充了数据。

【问题讨论】:

  • 你尝试重建完整的项目吗?
  • 不,我没有尝试过。当我从我的签名中删除 ActionEvent 时,它可以工作。但后来我无法访问我的处理程序中的事件。

标签: java user-interface javafx


【解决方案1】:
import java.awt.event.ActionEvent; // which is wrong

PersonOverviewController 类中导入 javafx.event.ActionEvent 而不是 java.awt.event.ActionEvent

【讨论】:

    猜你喜欢
    • 2017-09-30
    • 1970-01-01
    • 2016-12-13
    • 2015-10-24
    • 1970-01-01
    • 2015-04-09
    • 1970-01-01
    • 2019-01-28
    • 2016-07-20
    相关资源
    最近更新 更多