2017-12-07 21 views
2

Circleは、マウスが「ストローク」にあるときにのみマウスイベントに応答するようにしたい、つまり境界を意味します。もちろん、サークルは透明な塗りとカラフルなストロークを持っています。 JavaFX Pathを延長することは私には苦痛に見えますが、このCircleクラスでそれを行う方法はありますか?透明な塗りつぶし円の中でマウスイベントを取得する方法を停止するには?

答えて

2

あなたのソリューションはJava 9ではもう機能しませんが、あなたの場合は円の塗りつぶしをnullに設定するだけで済みます。これは同じ効果を持つはずです。

+0

うわー!私ははるかに良いアイデアがあることを知っていた。どのくらいクールです!どうもありがとう。 –

0

この解決策はJava 9では動作しません。 最後に、私はそれを行う優れた方法を見つけました。これは、将来的に他の人を助けることがあります。

javafx.scene.shape.Shapeクラスには、シーングラフは、ポイントが形状であるか否かを判断し、

今、別の方法 computeShapeContains(localX, localY, impl_configShape())

を呼び出す

boolean impl_computeContains(double localX, double localY)

非推奨メソッドを持っています

boolean contains(double localX, double localY)このメソッドは、impl_computeContainsメソッドを呼び出すJavaFX.scene.Nodeから取得します。だから私は、それらの方法を見ていたし、このようmthod impl_computeContainsをオーバーライド:

@Override 
    protected boolean impl_computeContains(double localX, double localY) { 
     float miterlimit = 
      (float) Utils.clampMin(getStrokeMiterLimit(), 1.0f); 
     return Toolkit.getToolkit().strokeContains(impl_configShape(), localX, localY, getStrokeType(), 
       Utils.clampMin(getStrokeWidth(), 0.0f), getStrokeLineCap(), getStrokeLineJoin(), miterlimit); 
    } 

とブーム!できます!!私がしたことは、ポイントがシェイプの内側の部分にあったなら、何をするのかを実装した部分を削除したことです。

関連する問題