Java Tutorial – Swing Text Drag And Drop – Sample Example

In computer graphical user interfaces, drag-and-drop or DnD is the action of (or support for the action of) clicking on a virtual object and dragging it to a different location or onto another virtual object. In general, it can be used to invoke many kinds of actions, or create various types of associations between two abstract objects. As a feature, support for drag-and-drop is not found in all software, though it is sometimes a fast and easy-to-learn technique for users to perform tasks. However, the lack of affordances in drag-and-drop implementations means that it is not always obvious that an item can be dragged.

In this tutorial, I will demonstrate the ability to do a drag and drop between a text field and a text area or vice versa in Java Swing GUI development. I will also show how dragging of a text from a text area or text field can be disabled, preventing the text from that field from getting dragged and drop. This is a very powerful feature of Java, and thanks to those who thought of simplifying developer’s life by implementing the feature in API. All we have to do now is to sit back and use the feature which has already been developed.

package com.kushal.gui;

import javax.swing.Box;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.JTextField;

/**
 * @author Kushal Paudyal
 * www.sanjaal.com/java
 * Last Modified On 07-14-2009
 *
 * This class demonstrates the ability to do
 * drag and drop of selected text between a text field
 * and a text area.
 *
 */
public class DragAndDropDemo extends JFrame {
	private static final long serialVersionUID = 1L;

	public DragAndDropDemo()
	{
		super("www.sanjaal.com/java - Drag and Drop Demo");

		Box verticalBox = Box.createVerticalBox();
		/**
		 * Defining a text field.
		 * Setting setDragEnabled() to true.
		 * You can drag on this field, or drag text from
		 * this field to any other field.
		 */
		JTextField textField = new JTextField(15);
		textField.setText("Select me and drag me to other fields.");
		textField.setDragEnabled(true);
		verticalBox.add(textField);

		/**
		 * Defining a text area.
		 * Setting setDragEnabled() to true.
		 * You can drag on this field, or drag text from
		 * this field to any other field.
		 */

		JTextArea textArea = new JTextArea(4, 25);
		textArea.setText("www.sanjaal.com/java is great.");
		textArea.setDragEnabled(true);
		verticalBox.add(new JScrollPane(textArea));

		/**
		 * Adding a text field by setting setDragEnabled() to false.
		 * You can drag over this text field, but cannot drag
		 * the text on this field to any other fields.
		 */
		JTextField textField1 = new JTextField(15);
		textField1.setText("You cannot drag me.");
		textField1.setDragEnabled(false);
		verticalBox.add(textField1);

		JPanel panel=new JPanel();
		panel.add(verticalBox);
		getContentPane().add(panel);

		/**
		 * Setting some common GUI Features
		 */
		pack();
		setVisible(true);
		setLocation(200,200);
		setSize(400,200);
		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

	}

	/**
	 * Testing the DragAndDrop GUI program.
	 */
	public static void main(String[] args) {
		new DragAndDropDemo();

	}
}

—————————-
Here is the output: