2009-12-03 2 views
2

Если я нарисую круги, используя Java2D. Есть ли способ отображения некоторого текста, когда я наводил курсор на любой из кругов? то есть я хочу отобразить идентификатор этого круга и некоторые другие вещи.Java 2D. Перемещение по кругу

ответ

0

Вам нужно будет сохранить все центры и радиус и проверить его на текущую позицию мыши.

это довольно простой функционирование. Если расстояние от положения мыши и центр одного из кругов меньше, чем радиус, мышь находится внутри него, и вы можете нарисовать нужное сообщение. не

есть вопрос здесь, что показывает математику: Equation for testing if a point is inside a circle

Надежда, которая помогает ...

Существует класс Polygon, которые могли бы сделать это для вас (содержит метод), но ни один из реализующие классы - это круг: S

+0

Лучшее использование уравнения окружения (изменение == для <), поскольку для проверки расстояния требуется вычисление квадратного корня. –

+0

true. Я должен был сказать квадрат расстояния по сравнению с квадратом радиуса: D Я указал на другую ссылку вопроса, которая имеет код Python для этого: D спасибо за исправление: D –

2

Существует несколько способов выполнить то, что вы хотите. Это одно из решений. Я предполагаю, что вы используете Ellipse2D для создания круга. И я предполагаю, что вы рисуете круг на JComponent, как JPanel.

Итак, вы объявляете эллипс.

Shape circle = new Ellispe2D.Double(x, y, width, height); 

Затем вы реализуете MouseMotionListener, чтобы определить, когда пользователь перемещает мышь по JPanel.

public void mouseMoved(MouseEvent e){ 
     if(circle.contains(e.getPoint())){ 
      //the mouse pointer is over the circle. So set a Message or whatever you want to do 
      msg = "You are over circle 1"; 
     }else{ 
      msg = "You are not over the circle"; 
     } 
    } 

Затем в краску() или метода paintComponent (в зависимости от того один переопределении сделать картину):

g2.fill(circle); 
    g2.drawString(msg, 10, 10); //write out the message 
1

Я не знаю, если вы можете сделать это непосредственно. Но вы можете использовать простую математику для проверки положения курсоров: (x-a)^2 + (y-b)^2 = r^2, где x, y - положение курсора a, b - центр окружности, а r - радиус.

Смежные вопросы