4

次のコードを使用するプログラムがあります。

public void mouseMoved(MouseEvent e) {
    mousex = e.getX();
    mousey = e.getY();

    if(mousex >= 700) {
        try {
            Robot robot = new Robot();

            robot.mouseMove(0, 0);
        } catch (AWTException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

    }
    if(mousex <= 100) {
        Robot robot;
        try {
            robot = new Robot();
            robot.mouseMove(0, 0);
        } catch (AWTException e1) {
            // TODO Auto-generated catch block
            e1.printStackTrace();
        }

    }
}

1つを除いて、すべて正常に動作します。jframeではなく画面上のカーソルの位置を設定します。また、if(mousex> = 700)と言うと、画面からも取得されます。代わりにjframeに変更する方法を知る必要があります。ありがとう。

4

2 に答える 2

3

画面上のJFrameの位置を取得し、それに応じてマウスの位置を変換するだけです。JFrameを含む、コンポーネントを拡張するすべてのオブジェクトには、メソッドがありgetLocationOnScreen()ます。この場合も、このメソッドを使用してJFrameの場所を取得し、マウスの相対的な場所(現在の場所と目的の場所の両方)を見つけます。

これは、小学校の代数で解決できます。

編集
毎回再作成するのではなく、ロボットオブジェクトを一度だけ作成し、必要に応じてオブジェクトを使用することもできます。

于 2012-07-11T00:26:05.773 に答える
3

あなたが得ることができるもの、

  1. JFrameの画面上の位置。
  2. 画面上の場所がわかれば、それら(x、y)を追加して、JFrame内の新しい場所を取得できます。
  3. 計算後の位置がのサイズよりも大きい場合はJFrame、xまたはyを現在の最大サイズに設定しますJFrame(調整が完全に動的である場合)

視覚的にはこのようなもの、

ここに画像の説明を入力してください

上の画像では、の画面上の位置JFrameは(50,50)です。これは、内のコンポーネントの座標が(0,0)になることを意味しJFrameます。これで、画面内のマウスの位置を取得しJFrame、JFrame内のランダムな希望の座標を言って、それらの画面位置50を追加することができます。

于 2012-07-11T00:32:54.260 に答える