Javafx 将 ActionListener 添加到按钮
Javafx adding ActionListener to button
button.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent e) {
label.setText("Accepted");
}
});
在上面的代码中,我们定义了按下按钮时会发生什么。这一切都很好,但我想创建新的 ActionListener,然后将其添加到我的按钮。
通常在 JButton 中,我可以像这样添加 ActionListener:
button.addActionListener(someControllerClass.createButtonListener());
在上面的代码中 createButtonListener() returns ActionListener.
我的问题是:JButton addActionListener 的等效项是什么?
如果你想,例如重用 EventHandler
,按照 JavaFX Documentation 中的描述定义它:
EventHandler<ActionEvent> buttonHandler = new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
label.setText("Accepted");
event.consume();
}
};
您现在可以通过以下方式将定义的 buttonHandler
添加到按钮的 onAction
:
button.setOnAction(buttonHandler);
并引用提供完整性删除选项的文档:
To remove an event handler that was registered by a convenience method, pass null to the convenience method, for example, node1.setOnMouseDragged(null).
您的结果:
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());
方法相同,但使用 lambda 表达式更容易:
button.setOnAction(event -> buttonSaveClicked());
button.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent e) {
label.setText("Accepted");
}
});
在上面的代码中,我们定义了按下按钮时会发生什么。这一切都很好,但我想创建新的 ActionListener,然后将其添加到我的按钮。 通常在 JButton 中,我可以像这样添加 ActionListener:
button.addActionListener(someControllerClass.createButtonListener());
在上面的代码中 createButtonListener() returns ActionListener.
我的问题是:JButton addActionListener 的等效项是什么?
如果你想,例如重用 EventHandler
,按照 JavaFX Documentation 中的描述定义它:
EventHandler<ActionEvent> buttonHandler = new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
label.setText("Accepted");
event.consume();
}
};
您现在可以通过以下方式将定义的 buttonHandler
添加到按钮的 onAction
:
button.setOnAction(buttonHandler);
并引用提供完整性删除选项的文档:
To remove an event handler that was registered by a convenience method, pass null to the convenience method, for example,
node1.setOnMouseDragged(null).
您的结果:
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());
方法相同,但使用 lambda 表达式更容易:
button.setOnAction(event -> buttonSaveClicked());