2016-04-13 64 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