3

マウスカーソルがJavaのJFrame内にあるかどうかを検出するメソッドをどのように記述しますか? メソッドは、内部にある場合は true を返し、そうでない場合は false を返す必要があります。

ありがとう、アンドリュー

4

4 に答える 4

2

mouseEnteredおよびmouseExitedイベントが十分ではないと仮定して(mouseExitedマウス カーソルがパネル内のボタンの境界に入ったときに余分な呼び出しを避けたかったので、これは私の場合でした)、私はこの短いチェックを思いつき、私のmouseEnteredおよびmouseExitedイベント ハンドラー:

public static boolean isMouseWithinComponent(Component c)
{
    Point mousePos = MouseInfo.getPointerInfo().getLocation();
    Rectangle bounds = c.getBounds();
    bounds.setLocation(c.getLocationOnScreen());
    return bounds.contains(mousePos);
}
于 2016-01-19T22:12:15.040 に答える
2

元の投稿のコメントを拡張するには、MouseInfo クラスを使用してマウスの現在の位置を取得できます。次に、この位置をフレームの境界と比較して、適切な値を返します。

于 2009-12-20T20:30:23.570 に答える
0

マウス リスナーを追加し、mouseEntered-Event に反応する必要があります。

JFrame.addMouseListener( new MouseAdapter() {
    public void mouseEntered( MouseEvent e ) {
        // your code here
    }
} );
于 2009-12-20T20:25:36.843 に答える
0

JFrame にマウス リスナーを追加し、mouseEntered および mouseExited イベントを探します。

frame.addMouseListener(new MouseListener() {
    public void mouseEntered(java.awt.event.MouseEvent evt) {
        // do your action here
    }

    public void mouseExited(java.awt.event.MouseEvent evt) {
        // do your action here
    }
});
于 2009-12-20T20:27:58.840 に答える