gpt4 book ai didi

javafx 向按钮添加附加操作

转载 作者:行者123 更新时间:2023-11-29 06:28:13 25 4
gpt4 key购买 nike

你能帮我解决这个问题吗?

我在 Cell 类中创建按钮并向该按钮添加一些默认操作。

public class Cell {
private Button button;

public Cell() {
this.button = new Button();
this.button.setOnAction(e -> System.out.println("Default action"));
}

public Button getButton() {
return button;
}
}

Game 类中,我想为此按钮添加额外的操作,但我也想保留默认操作。

public class Game {

public Game(Button button) {
// this add new action to button but delete previous one
// I want use both actions
button.setOnAction(e -> System.out.println("additional action"));
}
}

我知道新 Action 会覆盖之前的 Action 。因此,如果我单击该按钮,它只会打印 additional action

public class Main extends Application{

public static void main(String[] args) {
launch();
}

@Override
public void start(Stage primaryStage) throws Exception {
Cell cell = new Cell();
Button button = cell.getButton();
Game game = new Game(button);
VBox vBox = new VBox(button);
Scene scene = new Scene(vBox);
primaryStage.setScene(scene);
primaryStage.show();

}
}

是否可以向按钮添加新 Action 并保留以前的 Action ?

最佳答案

您可以在设置新 Action 之前获取当前 Action 并同时调用旧 Action 和新 Action :

public Game(Button button) {
EventHandler<ActionEvent> current = button.getOnAction();
button.setOnAction(e -> {
current.handle(e);
System.out.println("additional action");
});
}

关于javafx 向按钮添加附加操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46135476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com