Как получить положение мыши в формате float или double с точным разрешением?
-
19-09-2019 - |
Вопрос
Мне нужно изменить положение щелчка мыши на float или double, как я могу это сделать?В mouse listener я беру точку следующим образом,
e.getPoint();
но значения x и y точечного объекта являются целочисленными, мне нужна позиция в формате float или double.Любая помощь будет оценена по достоинству.
Редактировать Мне нужно точное разрешение.
Решение
getPoint()
выдает вам целочисленные значения, потому что это точность, с которой задаются координаты.Видишь http://java.sun.com/j2se/1.4.2/docs/api/java/awt/Point.html.
Зачем вам нужны значения с плавающей запятой?
Редактировать:в ответ на ваш комментарий вам нужно будет сопоставить ваши абсолютные позиции с пикселями экрана, используя функцию типа floor (всегда округлять в меньшую сторону) или round (округлять до ближайшего значения int).Система не имеет понятия о 0,2 пикселях или чем-то подобном.Вы можете либо постоянно усекать десятичную часть своих вычислений, либо постоянно сохранять точные координаты и при необходимости преобразовывать их в пиксели.
Другие советы
От int
вы должны быть в состоянии применить заклинание к double
или float
без каких-либо проблем:
double x = e.getPoint().x;
double y = e.getPoint().y;
Однако существуют методы, которые уже делают это:
double x = e.getPoint().getX();
double y = e.getPoint().getY();
Я что-то здесь упускаю?
Пожалуйста, обратите внимание, что точность не будет выше - мышь может привязываться только к полным пикселям, поэтому обычно integer подходит.Но если вам нужно произвести вычисления на основе этих значений, представления с плавающей запятой могут быть полезны.
Тогда вы не сможете получить более точную точку зрения getPoint()
, который возвращает точечный объект, содержащий только два целых числа.Чего бы вы хотели достичь с помощью этого?