私はチェスボードを持っており、ボードにピースを追加しようとしています。ボード上の各点はRectangleですので、ピースを追加する最も良い方法は、各Rectangleにピースを追加するImagePatternを追加することだと思いました。私が遭遇した問題は、ImagePatternをRectangleに追加したときにImagePatternが追加される前の色にもかかわらず、そのRectangleの背景を白色にすることでした。だから私の質問は、ImagePatternを追加した後、Rectangleの背景色を保持する方法があるのでしょうか? デモのために私のコードはボードに1枚しか追加しません。Rectangleの背景色を維持しながら、ImagePatternを長方形に追加する方法
public class ChessBoard extends Application {
GridPane root = new GridPane();
final int size = 8;
public void start(Stage primaryStage) {
for (int row = 0; row < size; row++) {
for (int col = 0; col < size; col++) {
Rectangle square = new Rectangle();
Color color;
if ((row + col) % 2 == 0)
color = Color.WHITE;
else
color = Color.BLACK;
square.setFill(color);
root.add(square, col, row);
if(row == 4 && col == 3){
Image p = new Image("Peices/Black/0.png");
ImagePattern pat = new ImagePattern(p);
square.setFill(pat);
}
square.widthProperty().bind(root.widthProperty().divide(size));
square.heightProperty().bind(root.heightProperty().divide(size));
square.setOnMouseClicked(e->{
square.setFill(Color.BLUE);
});
}
}
primaryStage.setScene(new Scene(root, 400, 400));
primaryStage.show();
}
public static void main(String[] args) {
launch(args);
}
}
感謝。私はこれについてしばらく研究していましたが、私はそれをすることができるとは思っていませんでしたが、私はただ確実にしたいと思っていました。 StackPaneを使用することをお勧めします。私はそれを試してみます。 – theAnon
fabian、I Havenは今このコードをいろいろなところで使いこなしていました。私は、個々の四角形にMouseListenerを追加し、その四角形が特定の部分の正当な移動であるかどうかを確認するために、簡単な質問をしました。リスナーを追加するのに最適な場所になれますか?私は最後のカップルの日のためにそれを把握しようとしていて、私が試したことは何も動作していないようです。ところでこの例のためにありがとう、私はすでにそれからトンを学んだ! – theAnon