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

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

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

Всем привет Сразу к делу ...
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
class Test extends JFrame
 {
  Test ()
   {
    super("Тест моего компонента");
    setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
    
    int width = 500, height = 400;
    setBounds((1024 - width) / 2, (768 - height) / 2, width, height);
    
    setLayout(null);//new FlowLayout(FlowLayout.LEFT));
    
    MySquare ms = new MySquare ();
    
    ms.setBounds(50, 50, 100, 100);
    
    /*
    ms.addMouseMotionListener(new MouseMotionAdapter ()
                               {
                                public void mouseDragged (MouseEvent e)
                                 {
                                  ms.setText("(" + e.getX() + ", " + e.getY() + ")");
                                 }
                               });
    */
    add(ms);
    
    setVisible(true);
   }
  
  public static void main (String args [])
   {
    SwingUtilities.invokeLater(new Runnable ()
                                {
                                 public void run ()
                                  {
                                   new Test ();
                                  }
                                });
   }
 }
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
 
class MySquare extends JPanel
 {
  private String out;
  private Point coordObj;
  private Point coordCursor;
  private boolean locked;
  
  MySquare ()
   {
    setMinimumSize(new Dimension (100, 100));
    setPreferredSize(new Dimension (100, 100));
    
    locked = false;
    
    addMouseMotionListener(new MouseMotionAdapter ()
                            {
                             public void mouseDragged (MouseEvent e)
                              {
                               if (locked)
                                {
                                 setLocation(coordObj.x + e.getX() - coordCursor.x, 
                                             coordObj.y + e.getY() - coordCursor.y);
                                }
                              }
                            });
    
    addMouseListener(new MouseAdapter ()
                      {
                       public void mousePressed (MouseEvent e)
                        {
                         coordObj = getLocation();
                         coordCursor = e.getPoint();
                         locked = true;
                        }
                       
                       public void mouseReleased (MouseEvent e)
                        {
                         locked = false;
                        }
                       
                       public void mouseExited (MouseEvent e)
                        {
                         locked = false;
                        }
                      });
    
    out = "(null)";
    repaint();
   }
  
  void setText (String text)
   {
    out = text;
    repaint();
   }
  
  public void paintComponent (Graphics g)
   {
    g.setColor(Color.BLACK);
    g.fillRect(0, 0, 100, 100);
    g.setColor(Color.YELLOW);
    g.setFont(new Font("Courier", Font.PLAIN, 14));
    g.drawString(out, 10, 20);
   }
 }
Объект перетаскивается, но вот как-то нездорово. Что я сделал не так?

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

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

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


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

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

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