我正在创建一个游戏,并且GUI中有六边形的棋子。我想在点击它们时选择它们。我尝试了以下方法:

hexagon.setOnMouseClicked(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            System.out.println(piece.toString());
        }
    });


如果我单击该部分,则会打印有关所选作品的信息,但该作品本身未被选中(六角形周围的蓝色边框)。

最佳答案

本质上是您的代码

hexagon.setOnMouseClicked(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            System.out.println(piece.toString());
        }
    });


只是打印出任何“片断”。

如果要选择六边形,则需要在onMouseClicked侦听器的handle方法中应用所选内容。

onMouseClicked仅侦听鼠标单击,您必须为其提供有关“如果单击该怎么办”的信息。

所以在这种情况下,您将要做

    hexagon.setOnMouseClicked(new EventHandler<MouseEvent>() {
        @Override
        public void handle(MouseEvent event) {
            System.out.println(piece.toString());

hexagon.setStroke(Color.BLUE);  //Color.BLACK, etc, but you asked for BLUE here.
        }
    });


笔触是对象的轮廓,因此我假设这就是您所说的“选定”?

如果要选择整个六边形,可以将“ setStroke”更改为“ setFill”,但要求输入蓝色边框。



我也不确定为什么要有六角形以及“碎片”,我认为六角形就是碎片...?

根据您的代码在做什么,您可以将hexagon.setStroke(Color.BLUE);替换为piece.setStroke(Color.BLUE);

无论哪种方式,希望对您有所帮助!

关于java - JavaFX选择六角形,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36610023/

10-13 21:27