javafx鼠标在for循环中单击事件

时间:2016-01-19 15:23:56

标签: for-loop mouseevent javafx-8 mouseclick-event

我正在用javafx构建一个国际象棋游戏应用程序,我遇到了一个我不太了解的问题。我正在尝试为我的棋子实现鼠标点击事件,但是当我尝试使用for循环为每个部分执行此操作时,我得到错误"从lambda表达式引用的局部变量必须是最终的或有效的最终版本&#34 ;。但是,当我独立创建每个鼠标事件时,没有问题。

public static ChessPiece[] BlackPieces = {
    new ChessPieceRook("BLACK"),
    new ChessPieceKnight("BLACK"),
    new ChessPieceBishop("BLACK"),
    new ChessPieceQueen("BLACK"),
    new ChessPieceKing("BLACK"),
    new ChessPieceBishop("BLACK"),
    new ChessPieceKnight("BLACK"),
    new ChessPieceRook("BLACK")};

这有效:

BlackPieces[0].setOnMouseClicked((MouseEvent event) -> {
    if (turn % 2 == 0) {
        setSelection(BlackPieces[0]);
        setSelectionClip(PieceClips[0]);
    }
});

但这并不是:

for (int i = 0; i < 8; i++) {
    BlackPieces[i].setOnMouseClicked((MouseEvent event) -> {
        if (turn % 2 == 0) {
            setSelection(BlackPieces[i]);
            setSelectionClip(PieceClips[i]);
        }
    });
}

任何人都可以向我解释这个吗?

0 个答案:

没有答案