2016-04-13 10 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つ以上を選択することはできないので... –

1

code you are using for the hexagonまたは達成したいことの完全な仕様は提供していません。明らかな答えは、六角形の内部選択状態を維持し、六角形のコード内にあるset a strokeだけを適用するか、drop shadow effectを適用しますが、styling via cssやサブクラスToggleButtonなどの別の方法を使用することをお勧めします。たとえば、トグルボタンの場合は、selectedと選択されていない状態があり、armedと非武装の状態で、hoveredと表示されないスタイルがあり、それぞれに異なる視覚的フィードバックを適用できます。私はより具体的な答えを提供することができましたが、あなたの状況に当てはまるとは思えません。より詳細な情報があれば、より良い答えが得られるかもしれません。

+0

一度に1つだけを選択できますか?同時に1つ以上を選択することはできないので... @jewelsea –

+0

はい、単一選択または複数選択を実装できます。どのように行うかは実装方法によって異なります。あなたのコードやアプローチを知らなければ、より具体的な答えを提供することはできません。私はゼロから何かを書くことができましたが、そうした場合、かなり時間がかかり、おそらくあなたが探しているものと正確に同じではないでしょう。 – jewelsea

関連する問題