小编use*_*159的帖子

我们可以在JAVAFX中使用create并使用自定义EventHandler类吗?

我对JavaFX中的事件处理有疑问.根据教程(以及我遇到的其他示例),事件处理在JavaFX中按以下方式进行:

Button addBtn = new Button("Add");
addBtn.setOnAction(new EventHandler<ActionEvent>() {
    @Override
    public void handle(ActionEvent event) {
            System.out.println("Add Clicked");
    }
});
Run Code Online (Sandbox Code Playgroud)

但是,我想知道,如果我可以"处理"按钮,请单击以下方式:

Button addBtn = new Button("Add");
addBtn.setOnAction(new addButtonClicked());
Run Code Online (Sandbox Code Playgroud)

这里addButtonClicked()是我自己的类(与它自己的一套方法和功能),我已经定义并写入到办理按一下按钮的动作.

有没有办法为JavaFX中的按钮附加我自己的事件处理程序类?

javafx javafx-2

4
推荐指数
1
解决办法
6012
查看次数

如何实现一个真正的自定义事件处理程序,可以处理JavaFX中的任何EventType?

我打算创建一个EventHandler类,它将处理我的JavaFX类中所有控件的所有类型的事件.

例如,我添加了我的自定义事件处理程序类,以下面的方式处理Action事件,它只是工作正常:

userNameText.addEventHandler(ActionEvent.ACTION, new DataChangeHandler());
cmbBox.addEventHandler(ActionEvent.ACTION, new DataChangeHandler());
btn.addEventHandler(ActionEvent.ACTION, new DataChangeHandler());
Run Code Online (Sandbox Code Playgroud)

这是我的custome事件处理程序类代码:

public class DataChangeHandler implements EventHandler<ActionEvent> {    
    public void handle(ActionEvent event) {
            System.out.println("My Very Own Private Button Handler");
        }               
}
Run Code Online (Sandbox Code Playgroud)

但是当我尝试将其中一个addEventHandler更改为MouseEvent并按以下方式修改主EventHandler类时,它会显示错误"接口事件处理程序不能使用不同的参数多次实现":

userNameText.addEventHandler(ActionEvent.ACTION, new DataChangeHandler());
cmbBox.addEventHandler(MouseEvent.CLICKED, new DataChangeHandler());
btn.addEventHandler(ActionEvent.ACTION, new DataChangeHandler());

public class DataChangeHandler implements EventHandler<ActionEvent>, EventHandler<MouseEvent> {    
    public void handle(ActionEvent event) {
            System.out.println("My Very Own Private Button Handler - ACTIONEVENT");
        }

        @Override
    public void handle(MouseEvent arg0) {
        System.out.println("My Very Own Private Button Handler - MOUSEEVENT");

    }
}
Run Code Online (Sandbox Code Playgroud)

有没有其他方法来实现这一目标?请帮忙.提前致谢.

javafx javafx-2

2
推荐指数
1
解决办法
9265
查看次数

标签 统计

javafx ×2

javafx-2 ×2