Java Swing JFrame。マウスをクリックします。マウスクリックの場所を取得したいです。GUI内。Javaでは、行
int mouseX = MouseInfo.getPointerInfo().getLocation.x;
画面全体でマウスの位置を示すようです。 GUIからの相対位置を取得するにはどうすればよいですか?
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) {
}
});
参照:
MouseListener
をGUIコンポーネントに追加して、その左上のピクセルを[0,0]ポイントとして脅威にさらし、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);
を見てみましょう - Component.getMousePosition
。
Component
がマウスポインターの直下にある場合、このComponent
の座標空間でのマウスポインターの位置を返します。それ以外の場合は、null
を返します。Component
が画面に表示されていない場合、このメソッドは、マウスポインターがComponent
が表示される領域の上にある場合でもnullを返します。Component
が他のComponent
sまたはネイティブウィンドウによって部分的または完全に隠されている場合、このメソッドは、マウスポインターが隠されていない部分の上にある場合にのみ非null
値を返します。Component
。
final Point mousePos = component.getMousePosition();
if (mousePos != null) {
final int mouseX = mousePos.x;
final int mouseY = mousePos.y;
...
}
...または、MouseListener
を使用する場合、 my original comment ...が表示される場合があります.
上記は、リスナーがバインドされたコンポーネントに関連するマウスポイントを返します。
public void mouseClicked(final MouseEvent evt) {
final Point pos = evt.getPoint();
final int x = pos.x;
final int y = pos.y;
}
MouseEvent には、ソースコンポーネントに相対的な位置を返すメソッドgetX()およびgetY()があります。