为棋子设定行动

时间:2017-05-18 11:55:33

标签: java javafx

我的跳棋游戏中有几个棋子对象。我希望能够对每一个(圆圈)做一个动作集,而不为每个棋子制作24个不同的动作集。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用getChildren()方法获取父节点中的所有pawn,并将其存储在列表中然后迭代它并按以下方式调用setOnAction。

List<Node> chieldNode = new ArrayList<>();
        chieldNode = parentNode.getChildren();
    for (Node node : chieldNode) {
        if (node instanceof Button) {
           ((Button) node).setOnAction(e -> {
                System.out.println(((Button) node).getText());
            });
       }
}

或者参考以下示例来获得一些想法

public class DemoEx extends Application {
        @Override
        public void start(Stage primaryStage) throws Exception {
                GridPane gridPane = new GridPane();
                Button[] button = new Button[100];
                for (int i = 0; i < 10; i++) {
                    for (int j = 0; j < 10; j++) {
                        button[j] = new Button(i + "" + j);
                        button[j].setPrefSize(50, 50);
                        gridPane.add(button[j], i, j);
                    }
                }

                List<Node> chieldNode = new ArrayList<>();
                chieldNode = gridPane.getChildren();
                for (Node node : chieldNode) {
                    if (node instanceof Button) {
                        ((Button) node).setOnAction(e -> {
                            System.out.println(((Button) node).getText());
                        });
                    }
                }

                Scene scene = new Scene(gridPane, gridPane.getMaxHeight(), gridPane.getMaxWidth());
                primaryStage.setScene(scene);
                primaryStage.show();
            }
        public static void main(String args[]) {
            launch(args);
        }
    }