JavaFX选择六边形

时间:2016-04-13 21:36:38

标签: java javafx

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

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

如果我点击它就打印有关所选作品的信息,但是作品本身没有被选中(六边形周围的蓝色边框)。

2 个答案:

答案 0 :(得分:1)

您没有提供code you are using for the hexagon或您希望完成的完整规范。显而易见的答案是,您将为六边形维持内部选择状态,并在六边形的代码中保留set a stroke或应用drop shadow effect,但也许您更喜欢不同的方法,例如{{3 }或继承styling via css。例如,使用切换按钮,有ToggleButton和未选择的状态,以及selected和非武装状态和armed以及未覆盖的样式,每个样式都可以应用不同的视觉反馈。我可以提供更具体的答案,但我不确定它是否适用于您的情况。通过更具体的细节,您可能会得到更好的答案。

答案 1 :(得分:1)

基本上是你的代码

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

只是打印出“片段”。

如果要选择六边形,则需要在onMouseClicked Listener的句柄方法中应用选择。

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);

无论哪种方式,希望这有帮助!