We would like to know how to drag and Drop drawString text.
import java.awt.Color; import java.awt.Dimension; import java.awt.Point; import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Random; //from w w w.j a v a 2s .co m import javax.swing.JComponent; import javax.swing.JFrame; import javax.swing.JLabel; import javax.swing.JPanel; import javax.swing.SwingConstants; public class Main { private static final String[] LABEL_STRINGS = { "A", "B", "C", "D", "E", "F", "G" }; static int HEIGHT = 400; static int WIDTH = 600; static int LBL_WIDTH = 60; static int LBL_HEIGHT = 40; JPanel mainPanel = new JPanel(); public Main() { mainPanel.setPreferredSize(new Dimension(WIDTH, HEIGHT)); mainPanel.setLayout(null); MyMouseAdapter myMouseAdapter = new MyMouseAdapter(); for (int i = 0; i < LABEL_STRINGS.length; i++) { JLabel label = new JLabel(LABEL_STRINGS[i], SwingConstants.CENTER); label.setSize(new Dimension(LBL_WIDTH, LBL_HEIGHT)); label.setOpaque(true); Random random = new Random(); label.setLocation(random.nextInt(WIDTH - LBL_WIDTH), random.nextInt(HEIGHT - LBL_HEIGHT)); label.setBackground(new Color(150 + random.nextInt(105), 150 + random .nextInt(105), 150 + random.nextInt(105))); label.addMouseListener(myMouseAdapter); label.addMouseMotionListener(myMouseAdapter); mainPanel.add(label); } } public JComponent getMainPanel() { return mainPanel; } public static void main(String[] args) { JFrame frame = new JFrame(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.getContentPane().add(new Main().getMainPanel()); frame.pack(); frame.setVisible(true); } } class MyMouseAdapter extends MouseAdapter { private Point initLabelLocation = null; private Point initMouseLocationOnScreen = null; @Override public void mousePressed(MouseEvent e) { JLabel label = (JLabel) e.getSource(); initLabelLocation = label.getLocation(); initMouseLocationOnScreen = e.getLocationOnScreen(); } @Override public void mouseReleased(MouseEvent e) { initLabelLocation = null; initMouseLocationOnScreen = null; } @Override public void mouseDragged(MouseEvent e) { if (initLabelLocation == null || initMouseLocationOnScreen == null) { return; } JLabel label = (JLabel) e.getSource(); Point mouseLocation = e.getLocationOnScreen(); int deltaX = mouseLocation.x - initMouseLocationOnScreen.x; int deltaY = mouseLocation.y - initMouseLocationOnScreen.y; int labelX = initLabelLocation.x + deltaX; int labelY = initLabelLocation.y + deltaY; label.setLocation(labelX, labelY); } }