implement - mouse java
Establecer la ubicaciĆ³n del cursor dentro de jframe (2)
Obtenga la ubicación del JFrame en la pantalla y simplemente traduzca la posición del mouse en consecuencia. Todos los objetos que extienden componentes, incluido JFrame, tienen el método getLocationOnScreen()
. De nuevo, use este método, obtenga la ubicación del JFrame y luego encuentre las ubicaciones relativas del mouse, tanto dónde está como dónde lo desea.
Esto se puede resolver con álgebra de la escuela primaria.
Editar
Es posible que desee crear su objeto Robot una sola vez y simplemente usar el objeto cuando sea necesario en lugar de volver a crearlo cada vez.
Tengo un programa que usa el siguiente código:
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();
}
}
}
Todo funciona bien excepto una cosa. Establece la posición del cursor en la pantalla, no el jframe. Además, cuando digo if (mousex> = 700) también lo obtiene de la pantalla. Necesito saber cómo cambiarlo para que sea del jframe en su lugar. Gracias.
Cosas que puedes conseguir,
- JFrame está en la ubicación de la pantalla.
- Una vez que conozca la ubicación en pantalla, simplemente puede agregar esos (x, y) y obtener la nueva ubicación dentro de su JFrame.
- Si la ubicación después del cálculo es mayor que el tamaño de
JFrame
entonces configure x o y con el tamaño actualJFrame
deJFrame
(si las coordinaciones son completamente dinámicas)
Visualmente algo así,
En la imagen de arriba, la ubicación en la pantalla de JFrame
es (50,50) lo que significa que esa coordenada se convierte en (0,0) para los componentes dentro del JFrame
. Ahora, para obtener la ubicación del mouse en la pantalla dentro de JFrame
, puede decir Alguna de las coordenadas deseadas al azar dentro de un JFrame y luego agregar esa ubicación de pantalla 50 en él.