2015-04-01 3 views
0

Используя мышь, я могу получить координаты x и y фрейма, но я не могу получить координаты x и y панели. В приведенных ниже кодах я получаю координаты x и y кадра.Получение координат панели

public void mouseMoved(MouseEvent e) { 
    x = e.getX(); 
    y = e.getY(); 
    text = Integer.toString(x) +","+Integer.toString(y); 

    Frame.frame.repaint(); 

} 

В приведенных ниже кодах я пытаюсь получить координаты x и y панели, но вместо этого она рисует 0. Paint.paint - это имя моего jpanel. Я не знаю, что я делаю неправильно. Пожалуйста, помоги, если можешь.

public void mouseMoved(MouseEvent e) { 
    x = Paint.paint.getX(); 
    y = Paint.paint.getY(); 
    text = Integer.toString(x) +","+Integer.toString(y); 

    Frame.frame.repaint(); 

} 

ответ

2

Если я понимаю правильно, ваш MouseListener зарегистрирован в JFrame, и вы хотите, чтобы получить х/у по отношению к JPanel, содержащейся в JFrame. X и y в MouseEvent относятся к компоненту, в котором зарегистрирован MouseListener. Если у вас есть MouseListener зарегистрированный на родительском контейнере, и который, чтобы получить координаты MouseEvent по отношению к ребенку компонентов, вы можете с помощью SwingUtilities для преобразования координат

public void mousePressed(MouseEvent e){ 
    Point childCoordinate = SwingUtilities.convertPoint(parent, e.getPoint(), child); 
} 
+0

Или я могу просто добавить MouseListener к панели , правильно? Я сделал это, и он работает. Но у меня есть еще один вопрос. Я добавил mouselistener как к кадру, так и к панели, но теперь он устанавливает координаты для панели. Не то, чтобы у меня была проблема с этим, но я просто путаюсь, почему он устанавливает его для панели, когда я добавляю mouselistener как к jframe, так и к jpanel. – Ski

+0

Я не знаю, что вы подразумеваете под «установкой координат». Если оба слушателя задают значение одной и той же переменной, то последняя, ​​которая будет уведомляться последним, будет конечной. – copeg

+0

, так что если я сделаю frame.addMouseListener (событие) и положил panel.addMouseListener (событие), он будет прослушивать панель с последней панели. Хорошо. Я вижу... – Ski

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