Я использую JPanel, чтобы нарисовать квадрат на экране. Когда я использую MouseDragged, он работает нормально и идет туда, где я хочу, почти. Каждый раз, когда я нажимаю на квадрат, квадрат автоматически перемещается, а верхний левый угол идет прямо под мышью. Как мне сделать так, чтобы квадрат не заменил себя и остается прямо под мышью? Спасибо за любую помощь.Пробел между мышью на экране и JPanel на Dragndrop
0
A
ответ
1
Учитывайте разницу между top-left
координаты компонента, который вы перемещение и mousePressed
местоположение.
И когда вы получаете новое положение, просто вычтите эту разницу.
Здесь я попытался объяснить это путем кодирования. Пусть myJPanel
будет компонент, который вы хотите двигаться. Тогда вот MouseAdapter
, который может сработать для вас. Новое положение сохраняется в newPosition
переменной.
new MouseAdapter(){
int diffx = 0, diffy = 0;
public void mousePressed(MouseEvent e) {
Point topLeft = myJPanel.getLocation();
Point mouseDn = e.getPoint();
diffx = mouseDn.x - topLeft.x;
diffy = mouseDn.y - topLeft.y;
}
public void mouseDragged(MouseEvent e) {
Point mouseDr = e.getPoint();
int newX = mouseDr.x - diffx;
int newY = mouseDr.y - diffy;
Point newPosition = new Point(newX, newY);
}
};
Смежные вопросы
- 1. добавить пробел между JFrame и JPanel
- 2. Как центрировать JPanel на экране
- 3. DragNDrop на предмет, который загружается после запуска dragndrop
- 4. Создание круга при щелчке мышью на экране
- 5. Имитировать щелчок мышью в точке на экране
- 6. пустой пробел между JPanel в Borderlayout
- 7. Пробел между divs на IE и Firefox
- 8. Пробел между JPanels
- 9. Пробел между меткой и входом
- 10. Сбой GridView на сенсорном экране работает с мышью
- 11. Открыть DIV при щелчке мышью - не отображается на экране
- 12. Потеряв фокус на экране JPanel в режиме качания, на экране не отображается содержимое
- 13. LibGDX Camera DragnDrop и актеры
- 14. Пробел/пробел между заголовками 1 и 2
- 15. Имитировать щелчок мышью внутри Board (JPanel)
- 16. Сохранение рисунков на jpanel
- 17. Текстовое наложение на JPanel
- 18. Extjs 4.1 Tooltip и DragNDrop
- 19. Как я могу получить уведомление, когда JPanel отображается на экране
- 20. Объект Java JPanel обновлен, но обновление не отображается на экране
- 21. Пробел между кнопками на Windows Phone
- 22. Большой пробел между JTables
- 23. Наведите указатель мыши на пробел между ними?
- 24. Линия прерывания на пробел между словами
- 25. Пробел между двумя кнопками на форме Bootstrap
- 26. Перемещение по JPanel с мышью, перетаскиваемой
- 27. Замена JPanel на другой JPanel
- 28. пробел между текстом и изображением
- 29. Связь между JFrame и JPanel
- 30. Управление мышью на C#