2016-04-13 63 views
0

我正在创建一个游戏,并且在我的GUI中有六边形的部分。我想在点击时选择它们。我试过如下:JavaFX选择六边形

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

如果我点击它,但片本身不会被选中(约六边形蓝色边框),它打印有关选定一块的信息。

回答

0

基本上你的代码

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”,但您要求蓝色边框。


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

取决于你的代码是干什么的,你可能会piece.setStroke(Color.BLUE);

无论哪种方式取代hexagon.setStroke(Color.BLUE);,希望这有助于!

+0

我的作品是一个有图像和六角形的小组。谢谢您的帮助。问题:你可以使setStroke边框变粗吗? @Lasagna –

+0

哦,好的,谢谢你的信息。为你的问题。 https://docs.oracle.com/javase/8/javafx/api/javafx/scene/shape/Shape.html#strokeWidthProperty 你会想要“setStrokeWidth(x.x); //默认值是2。0 – XaolingBao

+0

是否可以一次只选择一个?因为我不能同时选择超过1个... –

1

您不提供code you are using for the hexagon或您希望完成的完整规范。显而易见的答案是,您将维持六角形的内部选择状态,并且只在代码中使用六角形或应用drop shadow effect,但也许您更喜欢使用不同的方法,例如styling via css或子类ToggleButton。例如,使用切换按钮,有selected和未选定状态,以及armed和非武装状态以及hovered和未隐藏样式,每个样式可应用不同的视觉反馈。我可以提供更具体的答案,但我不确定它会适用于您的情况。更具体地说,你可能会得到更好的答案。

+0

是否可以一次只选择一个?因为我无法同时选择超过1个... @jewelsea –

+0

是的,您可以实现单个选择或多个选择。你怎么做取决于你的实现方法。不知道你的代码或方法,提供更具体的答案是不可能的。我可以从头开始写点东西,但如果我这样做的话,这两者都需要相当长的一段时间,也可能不是您正在寻找的内容。 – jewelsea