Mer*_*rtG 6 java user-interface javafx actionlistener
button.setOnAction(new EventHandler<ActionEvent>() {
@Override public void handle(ActionEvent e) {
label.setText("Accepted");
}
});
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我们定义了按下按钮时将发生的情况。一切都很好,但是我想创建新的ActionListener,然后将其添加到我的按钮中。通常在JButton中,我可以像这样添加ActionListener:
button.addActionListener(someControllerClass.createButtonListener());
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,createButtonListener()返回ActionListener。
我的问题是:JButton addActionListener等效于什么?
如果您想例如重用EventHandler,请像JavaFX文档中所述将其定义为:
EventHandler<ActionEvent> buttonHandler = new EventHandler<ActionEvent>() {
@Override
public void handle(ActionEvent event) {
label.setText("Accepted");
event.consume();
}
};
Run Code Online (Sandbox Code Playgroud)
现在,您可以通过以下方式将定义添加buttonHandler到onAction按钮的:
button.setOnAction(buttonHandler);
Run Code Online (Sandbox Code Playgroud)
并引用提供删除选项以确保完整性的文档:
要删除通过便捷方法注册的事件处理程序,请将null传递给便捷方法,例如,
node1.setOnMouseDragged(null).
为您带来:
button.setOnAction(null)
Run Code Online (Sandbox Code Playgroud)
该文档还提供了一些示例,说明如何为特定事件添加处理程序-这是一本好书。
我想这才是我应该做的。创建处理程序:
public EventHandler<Event> createSolButtonHandler()
{
btnSolHandler = new EventHandler<Event>() {
@Override
public void handle(Event event) {
System.out.println("Pressed!");
biddingHelperFrame.getBtnSag().setVisible(false);
}
};
return btnSolHandler;
}
Run Code Online (Sandbox Code Playgroud)
将处理程序添加到按钮:
btnSol.addEventHandler(MouseEvent.MOUSE_CLICKED, biddingHelperFrameController.createSolButtonHandler());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18417 次 |
| 最近记录: |