在方法java中设置操作按钮

时间:2017-05-01 18:04:49

标签: java button javafx eventhandler

我如何在同一方法中设置按钮的操作我正在创建按钮?

我想要的方法是这样的:

private void buttonsCreation() {
        //----------------creation of interactive buttons with text-----------------
        Button buttonForLoad = new Button("Load footage file");
        Button buttonForSave = new Button("Save footage file");
        Button buttonForSaveAs = new Button("Save as footage file");
        ButtonbuttonForRun = new Button("Run footage animation");
        Button buttonForTerminate = new Button("Stop footage animation");
        Button buttonForEditMenu = new Button("Edit current footage");
        //---------------setting the interaction of the buttons---------------------
        buttonForLoad.setOnAction(loadFootage());
        buttonForSave.setOnAction(saveFootage());
        buttonForSaveAs.setOnAction(saveAs());
        buttonForRun.setOnAction(runAnimation());
        buttonForTerminate.setOnAction(terminateAnimatino());
        buttonForEditMenu.setOnAction(editMenu());
    }

我希望setOnAction的属性能够调用这些方法,但是我收到了这个错误。 ButonBase中的setOnAction不能应用于void。

我知道我可以使用ActionEvent作为参数创建一个void句柄并使其工作,但是我想要的函数将在一个函数中,并且如果可以使用尽可能少的代码行< /强>

非常感谢

2 个答案:

答案 0 :(得分:1)

要在动作处理程序中调用void函数,lambda表达式很有用。像这样:

buttonForLoad.setOnAction(e -> loadFootage());
buttonForSave.setOnAction(e -> saveFootage());
...

答案 1 :(得分:0)

也许你的意思是动作监听器,例如:

private void buttonsCreation() {
//------------creation of interactive buttons with text---------------

Button buttonForLoad = new Button("Load footage file");
buttonForLoad.addActionListener(new ActionListener() {
            @Override
            public void actionPerformed(ActionEvent e) {
                // to do something
            }
        });

...
}