1

我正在尝试做的事情我认为正是 Meg 在这里谈论的内容:JavaFX2:从内部关闭一个阶段(子阶段)

当我尝试实现 JewelSea 的答案时,我得到“无法从静态上下文引用非静态方法 getSource()”。

所以我在 Scene Builder 中创建了我的辅助窗口(场景),它具有一个简单的控制器类,它基本上具有一个功能:将按钮绑定到 close() 事件处理程序。这是我的代码:

public class ProductNotFoundController
    implements Initializable {

    @FXML //  fx:id="closeButton"
    private Button closeButton; // Value injected by FXMLLoader


    @Override // This method is called by the FXMLLoader when initialization is complete
    public void initialize(URL fxmlFileLocation, ResourceBundle resources) {

        closeButton.setOnAction(new EventHandler<ActionEvent> () {
            @Override
            public void handle(ActionEvent t) {
//                ProductNotFound.avisoClose();
                Node source;
                source = (Node) ActionEvent.getSource();
                Stage stage = (Stage) source.getScene().getWindow();
                stage.close();
            }
        });

    }

}

有人可以告诉我我做错了什么吗?和/或我应该把 close() 方法放在哪里?

4

1 回答 1

2

替换ActionEventtgetSource是一个非静态方法。Jewelsea 正在使用该类actionEvent的实例ActionEvent

于 2013-05-08T23:39:00.023 回答