Перетаскивание своего объекта - Java

Узнай цену своей работы

Формулировка задачи:

Всем привет Сразу к делу ...
Листинг программы
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. class Test extends JFrame
  5. {
  6. Test ()
  7. {
  8. super("Тест моего компонента");
  9. setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  10. int width = 500, height = 400;
  11. setBounds((1024 - width) / 2, (768 - height) / 2, width, height);
  12. setLayout(null);//new FlowLayout(FlowLayout.LEFT));
  13. MySquare ms = new MySquare ();
  14. ms.setBounds(50, 50, 100, 100);
  15. /*
  16. ms.addMouseMotionListener(new MouseMotionAdapter ()
  17. {
  18. public void mouseDragged (MouseEvent e)
  19. {
  20. ms.setText("(" + e.getX() + ", " + e.getY() + ")");
  21. }
  22. });
  23. */
  24. add(ms);
  25. setVisible(true);
  26. }
  27. public static void main (String args [])
  28. {
  29. SwingUtilities.invokeLater(new Runnable ()
  30. {
  31. public void run ()
  32. {
  33. new Test ();
  34. }
  35. });
  36. }
  37. }
Листинг программы
  1. import java.awt.*;
  2. import java.awt.event.*;
  3. import javax.swing.*;
  4. class MySquare extends JPanel
  5. {
  6. private String out;
  7. private Point coordObj;
  8. private Point coordCursor;
  9. private boolean locked;
  10. MySquare ()
  11. {
  12. setMinimumSize(new Dimension (100, 100));
  13. setPreferredSize(new Dimension (100, 100));
  14. locked = false;
  15. addMouseMotionListener(new MouseMotionAdapter ()
  16. {
  17. public void mouseDragged (MouseEvent e)
  18. {
  19. if (locked)
  20. {
  21. setLocation(coordObj.x + e.getX() - coordCursor.x,
  22. coordObj.y + e.getY() - coordCursor.y);
  23. }
  24. }
  25. });
  26. addMouseListener(new MouseAdapter ()
  27. {
  28. public void mousePressed (MouseEvent e)
  29. {
  30. coordObj = getLocation();
  31. coordCursor = e.getPoint();
  32. locked = true;
  33. }
  34. public void mouseReleased (MouseEvent e)
  35. {
  36. locked = false;
  37. }
  38. public void mouseExited (MouseEvent e)
  39. {
  40. locked = false;
  41. }
  42. });
  43. out = "(null)";
  44. repaint();
  45. }
  46. void setText (String text)
  47. {
  48. out = text;
  49. repaint();
  50. }
  51. public void paintComponent (Graphics g)
  52. {
  53. g.setColor(Color.BLACK);
  54. g.fillRect(0, 0, 100, 100);
  55. g.setColor(Color.YELLOW);
  56. g.setFont(new Font("Courier", Font.PLAIN, 14));
  57. g.drawString(out, 10, 20);
  58. }
  59. }
Объект перетаскивается, но вот как-то нездорово. Что я сделал не так?

Решение задачи: «Перетаскивание своего объекта»

textual
Листинг программы
  1. if (locked)
  2.                 {
  3.                     setLocation(coordObj.x + e.getX() - coordCursor.x,
  4.                             coordObj.y + e.getY() - coordCursor.y);
  5.  
  6.                     coordObj = getLocation();
  7.  
  8.                 }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 4.1 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут