Java2Dを使用していくつかの円を描く場合。いずれかの円にカーソルを合わせると、テキストを表示する方法はありますか?つまり、そのサークルのIDとその他のものを表示したいと思います。
3 に答える
やりたいことを実現する方法はたくさんあります。これは 1 つの解決策です。Ellipse2D を使用して円を作成していると仮定します。そして、JPanel のような JComponent に円を描いているとします。
それで、楕円を宣言します。
Shape circle = new Ellispe2D.Double(x, y, width, height);
次に、MouseMotionListener を実装して、ユーザーがマウスを JPanel の上に移動したことを検出します。
public void mouseMoved(MouseEvent e){
if(circle.contains(e.getPoint())){
//the mouse pointer is over the circle. So set a Message or whatever you want to do
msg = "You are over circle 1";
}else{
msg = "You are not over the circle";
}
}
次に、paint() または paintComponent メソッド (ペイントを行うためにオーバーライドする方) で:
g2.fill(circle);
g2.drawString(msg, 10, 10); //write out the message
あなたが直接これを行うことができるかどうかはわかりません。ただし、簡単な計算を使用してカーソルの位置を確認できます: (xa)^2+(yb)^2=r^2 ここで、x、y はカーソル位置 a、b は円の中心、r は半径です。
すべての中心と半径を保存し、現在のマウス位置に対してテストする必要があります。
それはかなり簡単な操作です。マウスの位置といずれかの円の中心との距離が半径よりも小さい場合、マウスは円の内側にあり、必要なホバー メッセージを描画できます。
ここに数学を示す質問があります:点が円の内側にあるかどうかをテストするための方程式
それが役立つことを願っています...
あなたのためにそれを行う可能性のあるPolygonクラスがあります(containsメソッド)が、実装クラスのどれも円ではありません:S