Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/346.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javafx向按钮添加附加操作_Java_Button_Javafx - Fatal编程技术网

javafx向按钮添加附加操作

javafx向按钮添加附加操作,java,button,javafx,Java,Button,Javafx,你能帮我解决这个问题吗 我在类单元格中创建按钮,并向该按钮添加一些默认操作 public class Cell { private Button button; public Cell() { this.button = new Button(); this.button.setOnAction(e -> System.out.println("Default action")); } public Button getB

你能帮我解决这个问题吗

我在类单元格中创建按钮,并向该按钮添加一些默认操作

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;
    }
}
在课堂游戏中,我想添加额外的行动,这个按钮,但我想保留默认的行动

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"));
    }
}
我知道新的行动凌驾于先前的行动之上。因此,如果我单击按钮,它将只打印其他操作


是否可以将新操作添加到按钮并保留以前的帐户?

您可以在设置新操作之前获取当前操作,并调用旧操作和新操作:

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

您可以在设置新操作之前获取当前操作,并调用旧操作和新操作:

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

JavaFX内置了对将多个处理程序附加到事件的支持。检查文档,了解在调用任何setOn前缀方法时调用的和。需要记住的一点是,附加了addEventHandler的处理程序将在setOn方法之前触发,即附加了setOnAction的处理程序将在最后触发。您可以将游戏更改为以下内容:

public class Game {

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

}

JavaFX内置了对将多个处理程序附加到事件的支持。检查文档,了解在调用任何setOn前缀方法时调用的和。需要记住的一点是,附加了addEventHandler的处理程序将在setOn方法之前触发,即附加了setOnAction的处理程序将在最后触发。您可以将游戏更改为以下内容:

public class Game {

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

}

我们正在努力实现什么?如果你想要两个动作,为什么不把它们写在一个动作里?你想达到什么目的?如果你想要两个动作,为什么不在一个动作中写出呢??