title: Press and Drag in One Click?
body: <p>I have a program where I am creating a JLabel on a click and then dragging that to another portion of the interface.    </p>
  
  <p>What I want is to click somewhere in the JPanel, have it drop a JLabel there, and then drag another JLabel all in the same click.  </p>
  
  <p>I am able to do this, but it takes multiple clicks. Can I do it in one click? </p>
  
  <p>To illustrate what I mean, I created this sample program:</p>
  
  <pre><code>import java.awt.*;
  import java.awt.event.*;
  
  import javax.swing.*;
  
  public class DragTest extends JFrame implements MouseMotionListener,
          MouseListener {
  
      private JPanel panel = new JPanel(null);
      private JLabel dragLabel = new JLabel("drag");;
      private final JWindow window = new JWindow();
  
      public DragTest() {
          this.add(panel);
          panel.addMouseListener(this);
  
          dragLabel.setFont(new Font("Serif", Font.BOLD, 48));
      }
  
      @Override
      public void mouseDragged(MouseEvent me) {
          dragLabel = new JLabel("drag");
          dragLabel.setFont(new Font("Serif", Font.BOLD, 48));
          int x = me.getPoint().x;
          int y = me.getPoint().y;
          window.add(dragLabel);
          window.pack();
          Point pt = new Point(x, y);
          Component c = (Component) me.getSource();
          SwingUtilities.convertPointToScreen(pt, c);
          window.setLocation(pt);
          window.setVisible(true);
          repaint();
      }
  
      @Override
      public void mouseMoved(MouseEvent e) {
      }
  
      @Override
      public void mouseClicked(MouseEvent e) {
  
      }
  
      @Override
      public void mousePressed(MouseEvent e) {
  
          JLabel dropLabel = new JLabel("drop");
          panel.add(dropLabel);
          dropLabel.setForeground(Color.RED);
          dropLabel.setFont(new Font("Serif", Font.BOLD, 48));
          dropLabel.setBounds(e.getX(), e.getY(), 100, 60);
          dropLabel.addMouseMotionListener(this);
          dropLabel.addMouseListener(new MouseAdapter() {
  
              @Override
              public void mouseReleased(MouseEvent e) {
                  dragLabel.setVisible(false);
                  window.setVisible(false);
  
              }
  
          });
          repaint();
  
      }
  
      @Override
      public void mouseReleased(MouseEvent e) {
  
      }
  
      @Override
      public void mouseEntered(MouseEvent e) {
  
      }
  
      @Override
      public void mouseExited(MouseEvent e) {
  
      }
  
      public static void main(String[] args) {
          DragTest frame = new DragTest();
          frame.setVisible(true);
          frame.setSize(600, 400);
          frame.setResizable(false);
          frame.setLocationRelativeTo(null);
          frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
      }
  }
  </code></pre>
  
  <p>So the initial click creates the "drop" JLabel, and then clicking on and dragging on the "drop" JLabel will create a "drag" JLabel that follows the mouse around.  </p>
  
  <p>How can I do this in one click and drag? </p>