Posição do mouse no OS

11 respostas
jamesond

Qual API é mais usada para capturar a posição que o ponteiro do mouse se encontra no sistema operacional? Já procurei na java.awt.Toolkit mas não tem.

Preciso fazer um programa utilizando a API java.awt.Robot, porém sabendo aonde o mouse se encontra.

Agradeço se alguém puder ajudar com essa informação. :wink:

11 Respostas

_fs

Precisa ser só dentro do frame da aplicação?

jamesond

Não.
Tem que ser a posição do cursor no sistema operacional, fora de qualquer container.

:shock: :?

E

A classe javax.swing.SwingUtilities nao teria nenhum método que te servisse?

jamesond

Primeiramente gostaria de agradecer aos que responderam ao meu tópico.
Eu procurei na classe javax.swing.SwingUtilities e não encontrei nenhum método que se comunique com o ponteiro do mouse do sistema. :frowning:

fcmartins

Se estiver usando o Java 5, dê uma olhada em:
MouseInfo

jamesond

Era isso que eu tava procurando!! :smiley:
Valeu ae!

fredferrao

Legal a MouseInfo fcmartins, mas tem jeito de pegar somente dentro do JFrame??? com o mouseInfo ele pega a posicao em relação ao Screen!!

_fs

Adiciona mouseListener ao frame e captura o evento.

Legal mesmo o MouseInfo, fcmartins. Valeu :smiley:

fredferrao

valeu LIPE consegui e ai vai pra quem precisar:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;

public class Parametros extends JFrame
{
	private JTextField edit;		
	private String X, Y;	
	public Parametros()
	{		
		getContentPane().addMouseListener( new MouseAdapter(){
			public void mouseClicked(MouseEvent e) 
			{	
				//posicao no Frame
				X = String.valueOf(e.getX());//Posicao na Screen==> String.valueOf(MouseInfo.getPointerInfo().getLocation().x);				
				Y = String.valueOf(e.getY());//Posicao na Screen==> String.valueOf(MouseInfo.getPointerInfo().getLocation().y);
				edit.setText("X: " + X + "  Y: " + Y);
			}
			});		
		edit = new JTextField(20);		
		getContentPane().setLayout(new FlowLayout());
		getContentPane().add(edit);
		setUndecorated(true);
		getRootPane().setWindowDecorationStyle(JRootPane.FRAME);
		getRootPane().setBorder(BorderFactory.createEtchedBorder());
		setSize(400, 300);
		setVisible(true);
	}
	public static void main(String args[])
	{
		Parametros application = new Parametros();		
		application.setDefaultCloseOperation(EXIT_ON_CLOSE);
	}
}
fredferrao

ops esqueci, pra pegar no screen teria que ser em outro evento, no de um botao por exemplo com:

String.valueOf(MouseInfo.getPointerInfo().getLocation().x e String.valueOf(MouseInfo.getPointerInfo().getLocation().y);

fcmartins

Se você usa o Java 5 ficou melhor ainda: :smiley:

Component.getMousePosition
Container.getMousePosition

Note que ambos os métodos são herdados por Frame, JFrame, Window, JWindow, etc.

Criado 27 de junho de 2005
Ultima resposta 29 de jun. de 2005
Respostas 11
Participantes 5