Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/user-interface/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javafx将ActionListener添加到按钮_Java_User Interface_Javafx_Actionlistener - Fatal编程技术网

Javafx将ActionListener添加到按钮

Javafx将ActionListener添加到按钮,java,user-interface,javafx,actionlistener,Java,User Interface,Javafx,Actionlistener,在上面的代码中,createButtonListener()返回ActionListener 我的问题是:JButton addActionListener的等价物是什么?如果您想重用EventHandler,请将其定义为: 并从提供完整性删除选项的文档中引用: 要删除由便利方法注册的事件处理程序,请将null传递给便利方法,例如,node1.setonmousedrable(null)。 为您带来: button.setOnAction(buttonHandler); 该文档还提供了一些如何

在上面的代码中,createButtonListener()返回ActionListener


我的问题是:JButton addActionListener的等价物是什么?

如果您想重用
EventHandler
,请将其定义为:

并从提供完整性删除选项的文档中引用:

要删除由便利方法注册的事件处理程序,请将null传递给便利方法,例如,
node1.setonmousedrable(null)。

为您带来:

button.setOnAction(buttonHandler);

该文档还提供了一些如何为特定事件添加处理程序的示例—这是一本很好的读物。

我认为这是我应该做的。创建处理程序:

button.setOnAction(null)

方法相同,但使用lamda表达式更容易:

btnSol.addEventHandler(MouseEvent.MOUSE_CLICKED, biddingHelperFrameController.createSolButtonHandler());

谢谢你的回答。如果我理解正确,你是说我应该使用EventHandler而不是actionListeners。我说得对吗?因为您似乎来自Swing(您的JButton语句),所以必须使术语与您的UI框架保持一致。编辑:看看是的,我只是寻找EventHandler,它有点不同,但我解决了我的问题,谢谢你的帮助。不用担心@MertG-切换UI框架需要一些时间。特别是如果您不断地混合使用Swing、JavaFX、WPF等。为什么要提供一个方法(针对您明确说明的代码示例)来返回一个新的EventHandler(与我的答案中的方法相反)?@SSchuette在您的答案中,一次只能有一个事件处理程序。OP可能需要触发更多动作,因此他需要多个动作处理程序。是的,完整确认@GoXR3Plus,但这就是为什么要问的原因-所描述的场景似乎对单个处理程序“没问题”。根据您的建议@SSchuette,我只发布了我自己问题的答案。它工作得很好,用这样的方法创建同一个EventHandler的多个实例没有任何意义。按照另一个答案所示进行操作。
button.setOnAction(buttonHandler);
button.setOnAction(null)
public EventHandler<Event> createSolButtonHandler()
{
    btnSolHandler = new EventHandler<Event>() {

        @Override
        public void handle(Event event) {
            System.out.println("Pressed!");
            biddingHelperFrame.getBtnSag().setVisible(false);
        }
    };
    return btnSolHandler;
}
btnSol.addEventHandler(MouseEvent.MOUSE_CLICKED, biddingHelperFrameController.createSolButtonHandler());
buttonSave.setOnAction(event -> buttonSaveClicked());