import java.awt.*;

import java.awt.event.*;

import javax.swing.*;



public class MoveMessageDemo extends JFrame {

  public MoveMessageDemo() {

    // Create a MovableMessagePanel instance for moving a message
    MovableMessagePanel p = new MovableMessagePanel("Welcome to Java");



    // Place the message panel in the frame
    setLayout(new BorderLayout());

    add(p);

  }



  /** Main method */

  public static void main(String[] args) {

    MoveMessageDemo frame = new MoveMessageDemo();

    frame.setTitle("MoveMessageDemo");

    frame.setLocationRelativeTo(null); // Center the frame
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

    frame.setSize(200, 100);

    frame.setVisible(true);

  }



  // Inner class: MovableMessagePanel draws a message
  static class MovableMessagePanel extends JPanel {

    private String message = "Welcome to Java";

    private int x = 20;

    private int y = 20;



    /** Construct a panel to draw string s */

    public MovableMessagePanel(String s) {

      message = s;

      addMouseMotionListener(new MouseMotionAdapter() {

        /** Handle mouse dragged event */

        public void mouseDragged(MouseEvent e) {

          // Get the new location and repaint the screen
          x = e.getX();

          y = e.getY();

          repaint();

        }

      });

    }



    /** Paint the component */

    protected void paintComponent(Graphics g) {

      super.paintComponent(g);

      g.drawString(message, x, y);

    }

  }

}