19

JavaSwingJFrameを使用しているとします。マウスをクリックします。GUI内でのマウスクリックの位置を取得したい。Javaでは、次の行

int mouseX = MouseInfo.getPointerInfo().getLocation.x;

画面全体でのマウスの位置を示しているようです。GUIを基準にした位置を取得するにはどうすればよいですか?

4

4 に答える 4

25

MouseListenerあなたができる方法から:

@Override
public void mouseClicked(MouseEvent e) {
    int x=e.getX();
    int y=e.getY();
    System.out.println(x+","+y);//these co-ords are relative to the component
}

単にこれをあなたに追加してくださいComponent

component.addMouseListener(new MouseListener() {
    @Override
    public void mouseClicked(MouseEvent e) {
    }
});

参照:

于 2012-09-12T20:58:34.233 に答える
8

MouseListener左上のピクセルが[0,0]ポイントとして脅威にさらされる必要があるGUIコンポーネントに追加し、MouseEventからxとyを取得できます。

JFrame frame = new JFrame();
JPanel panel = new JPanel();
frame.add(panel);
panel.addMouseListener(new MouseAdapter() {// provides empty implementation of all
                                           // MouseListener`s methods, allowing us to
                                           // override only those which interests us
    @Override //I override only one method for presentation
    public void mousePressed(MouseEvent e) {
        System.out.println(e.getX() + "," + e.getY());
    }
});
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.setSize(200, 200);
frame.setVisible(true);
于 2012-09-12T21:02:50.073 に答える
7

を見てくださいComponent.getMousePosition

がマウスポインタの真下にあるComponent場合は、この座標空間でのマウスポインタの位置を返します。それ以外の場合は、を返します。が画面に表示されていない場合、マウスポインタが表示される領域の上にある場合でも、このメソッドはnullを返します。が他のウィンドウまたはネイティブウィンドウによって部分的または完全に隠されている場合、このメソッドは、マウスポインタがの隠されていない部分の上にある場合にのみ非値を返します。ComponentnullComponentComponentComponentComponentnullComponent

final Point mousePos = component.getMousePosition();
if (mousePos != null) {
  final int mouseX = mousePos.x;
  final int mouseY = mousePos.y;
  ...
}

...または、を使用すると、私の元のコメントMouseListenerが表示される場合があります...

を使用してみてくださいMouseEvent.getPoint

上記は、リスナーがバインドされたコンポーネントを基準にしたマウスポイントを返します。

public void mouseClicked(final MouseEvent evt) {
  final Point pos = evt.getPoint();
  final int x = pos.x;
  final int y = pos.y;
}
于 2012-09-12T20:57:28.213 に答える
3

MouseEventには、ソースコンポーネントに相対的な位置を返すメソッドgetX()およびgetY()があります。

于 2012-09-12T20:57:14.970 に答える