我希望这个问题实际上不是现有问题的重复!我搜索后没有找到对我的问题的好的答案。这里是:

我有一个MyGame类,其中包含一个Button成员对象。每当单击该按钮时,MyGame都会执行某些操作。

class MyGame extends Application {
    MyBoard board = new MyBoard();
    MyButton btn = new MyButton();

    public MyGame() {
        board.add(btn);
    }

    // this method should be called whenever the button is clicked!
    public void doSomething() {
        doingSomething();
    }
}

class MyButton extends Button {
    int someData;

    // some code here

    public MyButton() {
        this.setOnAction(new EventHandler<ActionEvent>() {
            @Override
            public void handle(ActionEvent arg0) {
                MyGame.doSomething();  // ==> NOT POSSIBLE!!!
            }
        });
    }
}


接口是使MyButton和MyGame之间进行通信的最佳方法吗?如果是这样,您将如何做?

我不想将MyGame对象的引用移交给MyButton对象!我认为这不是解决此问题的好方法。

我感谢任何建议和帮助!

干杯

最佳答案

MyGame的构造函数中,可以将ActionListener添加到btn,在对按钮执行操作时将调用该。

btn.addActionListener(new ActionListener() {
    @Override
    public void actionPerformed(ActionEvent e) {
        // Insert thing to do within MyGame here
    }
});

10-08 11:28