<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ru">
		<id>http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FJDK_6%2FDrag_and_Drop</id>
		<title>Java/JDK 6/Drag and Drop - История изменений</title>
		<link rel="self" type="application/atom+xml" href="http://www.jexp.ru/index.php?action=history&amp;feed=atom&amp;title=Java%2FJDK_6%2FDrag_and_Drop"/>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/JDK_6/Drag_and_Drop&amp;action=history"/>
		<updated>2026-04-22T21:10:47Z</updated>
		<subtitle>История изменений этой страницы в вики</subtitle>
		<generator>MediaWiki 1.30.0</generator>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/JDK_6/Drag_and_Drop&amp;diff=6367&amp;oldid=prev</id>
		<title>Admin: 1 версия</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/JDK_6/Drag_and_Drop&amp;diff=6367&amp;oldid=prev"/>
				<updated>2010-06-01T06:12:14Z</updated>
		
		<summary type="html">&lt;p&gt;1 версия&lt;/p&gt;
&lt;table class=&quot;diff diff-contentalign-left&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr style=&quot;vertical-align: top;&quot; lang=&quot;ru&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;← Предыдущая&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: white; color:black; text-align: center;&quot;&gt;Версия 06:12, 1 июня 2010&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; style=&quot;text-align: center;&quot; lang=&quot;ru&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(нет различий)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>	</entry>

	<entry>
		<id>http://www.jexp.ru/index.php?title=Java/JDK_6/Drag_and_Drop&amp;diff=6366&amp;oldid=prev</id>
		<title> в 18:01, 31 мая 2010</title>
		<link rel="alternate" type="text/html" href="http://www.jexp.ru/index.php?title=Java/JDK_6/Drag_and_Drop&amp;diff=6366&amp;oldid=prev"/>
				<updated>2010-05-31T18:01:43Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Новая страница&lt;/b&gt;&lt;/p&gt;&lt;div&gt;== Drag and drop between JList and JTextField ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Rectangle;&lt;br /&gt;
import java.awt.datatransfer.DataFlavor;&lt;br /&gt;
import java.awt.datatransfer.Transferable;&lt;br /&gt;
import java.awt.event.ItemEvent;&lt;br /&gt;
import java.awt.event.ItemListener;&lt;br /&gt;
import javax.swing.DefaultListModel;&lt;br /&gt;
import javax.swing.DropMode;&lt;br /&gt;
import javax.swing.JComboBox;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.TransferHandler;&lt;br /&gt;
public class DnDDemo3 {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JPanel north = new JPanel();&lt;br /&gt;
    north.add(new JLabel(&amp;quot;Drag from here:&amp;quot;));&lt;br /&gt;
    JTextField field = new JTextField(10);&lt;br /&gt;
    field.setDragEnabled(true); &lt;br /&gt;
    north.add(field);&lt;br /&gt;
    final DefaultListModel listModel = new DefaultListModel();&lt;br /&gt;
    listModel.addElement(&amp;quot;first&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;second&amp;quot;);&lt;br /&gt;
    final JList list = new JList(listModel);&lt;br /&gt;
    list.setDragEnabled(true);&lt;br /&gt;
    list.setTransferHandler(new TransferHandler() {&lt;br /&gt;
      public boolean canImport(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!support.isDataFlavorSupported(DataFlavor.stringFlavor)) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JList.DropLocation dl = (JList.DropLocation) support.getDropLocation();&lt;br /&gt;
        if (dl.getIndex() == -1) {&lt;br /&gt;
          return false;&lt;br /&gt;
        } else {&lt;br /&gt;
          return true;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      public boolean importData(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!canImport(support)) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        Transferable transferable = support.getTransferable();&lt;br /&gt;
        String data;&lt;br /&gt;
        try {&lt;br /&gt;
          data = (String) transferable.getTransferData(DataFlavor.stringFlavor);&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JList.DropLocation dl = (JList.DropLocation) support.getDropLocation();&lt;br /&gt;
        int index = dl.getIndex();&lt;br /&gt;
        if (dl.isInsert()) {&lt;br /&gt;
          listModel.add(index, data);&lt;br /&gt;
        } else {&lt;br /&gt;
          listModel.set(index, data);&lt;br /&gt;
        }&lt;br /&gt;
        Rectangle r = list.getCellBounds(index, index);&lt;br /&gt;
        list.scrollRectToVisible(r);&lt;br /&gt;
        return true;&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    JScrollPane center = new JScrollPane();&lt;br /&gt;
    center.setViewportView(list);&lt;br /&gt;
    list.setDropMode(DropMode.USE_SELECTION);&lt;br /&gt;
    JPanel cp = new JPanel();&lt;br /&gt;
    cp.setLayout(new BorderLayout());&lt;br /&gt;
    cp.add(north, BorderLayout.NORTH);&lt;br /&gt;
    cp.add(center, BorderLayout.CENTER);&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setContentPane(cp);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
        &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Drag and drop between JTextArea and JTextField ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextArea;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
public class DnDBetweenJTextAreaAndJTextFieldDemo {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame(&amp;quot;Drag and Drop Demo&amp;quot;);&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setContentPane(new JPanel());&lt;br /&gt;
    JTextField textField = new JTextField(25);&lt;br /&gt;
    textField.setText(&amp;quot;www.jexp.ru&amp;quot;);&lt;br /&gt;
    frame.add(textField);&lt;br /&gt;
    JTextArea textArea = new JTextArea(4, 25);&lt;br /&gt;
    textArea.setText(&amp;quot;Demonstrating\ndrag and drop&amp;quot;);&lt;br /&gt;
    frame.getContentPane().add(new JScrollPane(textArea));&lt;br /&gt;
    textArea.setDragEnabled(true);&lt;br /&gt;
    textField.setDragEnabled(true);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
        &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DropMode.INSERT ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Rectangle;&lt;br /&gt;
import java.awt.datatransfer.DataFlavor;&lt;br /&gt;
import java.awt.datatransfer.Transferable;&lt;br /&gt;
import java.awt.event.ItemEvent;&lt;br /&gt;
import java.awt.event.ItemListener;&lt;br /&gt;
import javax.swing.DefaultListModel;&lt;br /&gt;
import javax.swing.DropMode;&lt;br /&gt;
import javax.swing.JComboBox;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.TransferHandler;&lt;br /&gt;
public class DropModeINSERT {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JPanel north = new JPanel();&lt;br /&gt;
    north.add(new JLabel(&amp;quot;Drag from here:&amp;quot;));&lt;br /&gt;
    JTextField field = new JTextField(10);&lt;br /&gt;
    field.setDragEnabled(true); &lt;br /&gt;
    north.add(field);&lt;br /&gt;
    final DefaultListModel listModel = new DefaultListModel();&lt;br /&gt;
    listModel.addElement(&amp;quot;first&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;second&amp;quot;);&lt;br /&gt;
    final JList list = new JList(listModel);&lt;br /&gt;
    list.setDragEnabled(true);&lt;br /&gt;
    list.setTransferHandler(new TransferHandler() {&lt;br /&gt;
      public boolean canImport(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!support.isDataFlavorSupported(DataFlavor.stringFlavor)) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JList.DropLocation dl = (JList.DropLocation) support.getDropLocation();&lt;br /&gt;
        if (dl.getIndex() == -1) {&lt;br /&gt;
          return false;&lt;br /&gt;
        } else {&lt;br /&gt;
          return true;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      public boolean importData(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!canImport(support)) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        Transferable transferable = support.getTransferable();&lt;br /&gt;
        String data;&lt;br /&gt;
        try {&lt;br /&gt;
          data = (String) transferable.getTransferData(DataFlavor.stringFlavor);&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JList.DropLocation dl = (JList.DropLocation) support.getDropLocation();&lt;br /&gt;
        int index = dl.getIndex();&lt;br /&gt;
        if (dl.isInsert()) {&lt;br /&gt;
          listModel.add(index, data);&lt;br /&gt;
        } else {&lt;br /&gt;
          listModel.set(index, data);&lt;br /&gt;
        }&lt;br /&gt;
        // Scroll to display the element that was dropped&lt;br /&gt;
        Rectangle r = list.getCellBounds(index, index);&lt;br /&gt;
        list.scrollRectToVisible(r);&lt;br /&gt;
        return true;&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    JScrollPane center = new JScrollPane();&lt;br /&gt;
    center.setViewportView(list);&lt;br /&gt;
    list.setDropMode(DropMode.INSERT);&lt;br /&gt;
    JPanel cp = new JPanel();&lt;br /&gt;
    cp.setLayout(new BorderLayout());&lt;br /&gt;
    cp.add(north, BorderLayout.NORTH);&lt;br /&gt;
    cp.add(center, BorderLayout.CENTER);&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setContentPane(cp);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
        &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DropMode.ON ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Rectangle;&lt;br /&gt;
import java.awt.datatransfer.DataFlavor;&lt;br /&gt;
import java.awt.datatransfer.Transferable;&lt;br /&gt;
import java.awt.event.ItemEvent;&lt;br /&gt;
import java.awt.event.ItemListener;&lt;br /&gt;
import javax.swing.DefaultListModel;&lt;br /&gt;
import javax.swing.DropMode;&lt;br /&gt;
import javax.swing.JComboBox;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.TransferHandler;&lt;br /&gt;
public class DropModeON {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JPanel north = new JPanel();&lt;br /&gt;
    north.add(new JLabel(&amp;quot;Drag from here:&amp;quot;));&lt;br /&gt;
    JTextField field = new JTextField(10);&lt;br /&gt;
    field.setDragEnabled(true); &lt;br /&gt;
    north.add(field);&lt;br /&gt;
    final DefaultListModel listModel = new DefaultListModel();&lt;br /&gt;
    listModel.addElement(&amp;quot;first&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;second&amp;quot;);&lt;br /&gt;
    final JList list = new JList(listModel);&lt;br /&gt;
    list.setDragEnabled(true);&lt;br /&gt;
    list.setTransferHandler(new TransferHandler() {&lt;br /&gt;
      public boolean canImport(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!support.isDataFlavorSupported(DataFlavor.stringFlavor)) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JList.DropLocation dl = (JList.DropLocation) support.getDropLocation();&lt;br /&gt;
        if (dl.getIndex() == -1) {&lt;br /&gt;
          return false;&lt;br /&gt;
        } else {&lt;br /&gt;
          return true;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      public boolean importData(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!canImport(support)) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        Transferable transferable = support.getTransferable();&lt;br /&gt;
        String data;&lt;br /&gt;
        try {&lt;br /&gt;
          data = (String) transferable.getTransferData(DataFlavor.stringFlavor);&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JList.DropLocation dl = (JList.DropLocation) support.getDropLocation();&lt;br /&gt;
        int index = dl.getIndex();&lt;br /&gt;
        if (dl.isInsert()) {&lt;br /&gt;
          listModel.add(index, data);&lt;br /&gt;
        } else {&lt;br /&gt;
          listModel.set(index, data);&lt;br /&gt;
        }&lt;br /&gt;
        // Scroll to display the element that was dropped&lt;br /&gt;
        Rectangle r = list.getCellBounds(index, index);&lt;br /&gt;
        list.scrollRectToVisible(r);&lt;br /&gt;
        return true;&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    JScrollPane center = new JScrollPane();&lt;br /&gt;
    center.setViewportView(list);&lt;br /&gt;
    list.setDropMode(DropMode.ON);&lt;br /&gt;
    JPanel cp = new JPanel();&lt;br /&gt;
    cp.setLayout(new BorderLayout());&lt;br /&gt;
    cp.add(north, BorderLayout.NORTH);&lt;br /&gt;
    cp.add(center, BorderLayout.CENTER);&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setContentPane(cp);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
        &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== DropMode.ON_OR_INSERT ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.Rectangle;&lt;br /&gt;
import java.awt.datatransfer.DataFlavor;&lt;br /&gt;
import java.awt.datatransfer.Transferable;&lt;br /&gt;
import java.awt.event.ItemEvent;&lt;br /&gt;
import java.awt.event.ItemListener;&lt;br /&gt;
import javax.swing.DefaultListModel;&lt;br /&gt;
import javax.swing.DropMode;&lt;br /&gt;
import javax.swing.JComboBox;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JList;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.TransferHandler;&lt;br /&gt;
public class DropModeON_OR_INSERT {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JPanel north = new JPanel();&lt;br /&gt;
    north.add(new JLabel(&amp;quot;Drag from here:&amp;quot;));&lt;br /&gt;
    JTextField field = new JTextField(10);&lt;br /&gt;
    field.setDragEnabled(true); &lt;br /&gt;
    north.add(field);&lt;br /&gt;
    final DefaultListModel listModel = new DefaultListModel();&lt;br /&gt;
    listModel.addElement(&amp;quot;first&amp;quot;);&lt;br /&gt;
    listModel.addElement(&amp;quot;second&amp;quot;);&lt;br /&gt;
    final JList list = new JList(listModel);&lt;br /&gt;
    list.setDragEnabled(true);&lt;br /&gt;
    list.setTransferHandler(new TransferHandler() {&lt;br /&gt;
      public boolean canImport(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!support.isDataFlavorSupported(DataFlavor.stringFlavor)) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JList.DropLocation dl = (JList.DropLocation) support.getDropLocation();&lt;br /&gt;
        if (dl.getIndex() == -1) {&lt;br /&gt;
          return false;&lt;br /&gt;
        } else {&lt;br /&gt;
          return true;&lt;br /&gt;
        }&lt;br /&gt;
      }&lt;br /&gt;
      public boolean importData(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!canImport(support)) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        Transferable transferable = support.getTransferable();&lt;br /&gt;
        String data;&lt;br /&gt;
        try {&lt;br /&gt;
          data = (String) transferable.getTransferData(DataFlavor.stringFlavor);&lt;br /&gt;
        } catch (Exception e) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JList.DropLocation dl = (JList.DropLocation) support.getDropLocation();&lt;br /&gt;
        int index = dl.getIndex();&lt;br /&gt;
        if (dl.isInsert()) {&lt;br /&gt;
          listModel.add(index, data);&lt;br /&gt;
        } else {&lt;br /&gt;
          listModel.set(index, data);&lt;br /&gt;
        }&lt;br /&gt;
        // Scroll to display the element that was dropped&lt;br /&gt;
        Rectangle r = list.getCellBounds(index, index);&lt;br /&gt;
        list.scrollRectToVisible(r);&lt;br /&gt;
        return true;&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    JScrollPane center = new JScrollPane();&lt;br /&gt;
    center.setViewportView(list);&lt;br /&gt;
    list.setDropMode(DropMode.ON_OR_INSERT);&lt;br /&gt;
    JPanel cp = new JPanel();&lt;br /&gt;
    cp.setLayout(new BorderLayout());&lt;br /&gt;
    cp.add(north, BorderLayout.NORTH);&lt;br /&gt;
    cp.add(center, BorderLayout.CENTER);&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setContentPane(cp);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
        &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Set tree drag mode to DropMode.INSERT ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.datatransfer.DataFlavor;&lt;br /&gt;
import java.awt.datatransfer.Transferable;&lt;br /&gt;
import java.awt.datatransfer.UnsupportedFlavorException;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import javax.swing.DropMode;&lt;br /&gt;
import javax.swing.JComboBox;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.JTree;&lt;br /&gt;
import javax.swing.TransferHandler;&lt;br /&gt;
import javax.swing.tree.DefaultMutableTreeNode;&lt;br /&gt;
import javax.swing.tree.DefaultTreeModel;&lt;br /&gt;
import javax.swing.tree.TreePath;&lt;br /&gt;
public class DndTree {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    JPanel top = new JPanel(new BorderLayout());&lt;br /&gt;
    JLabel dragLabel = new JLabel(&amp;quot;Drag me:&amp;quot;);&lt;br /&gt;
    JTextField text = new JTextField();&lt;br /&gt;
    text.setDragEnabled(true);&lt;br /&gt;
    top.add(dragLabel, BorderLayout.WEST);&lt;br /&gt;
    top.add(text, BorderLayout.CENTER);&lt;br /&gt;
    f.add(top, BorderLayout.NORTH);&lt;br /&gt;
    final JTree tree = new JTree();&lt;br /&gt;
    final DefaultTreeModel model = (DefaultTreeModel) tree.getModel();&lt;br /&gt;
    tree.setTransferHandler(new TransferHandler() {&lt;br /&gt;
      public boolean canImport(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!support.isDataFlavorSupported(DataFlavor.stringFlavor) || !support.isDrop()) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JTree.DropLocation dropLocation = (JTree.DropLocation) support.getDropLocation();&lt;br /&gt;
        return dropLocation.getPath() != null;&lt;br /&gt;
      }&lt;br /&gt;
      public boolean importData(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!canImport(support)) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JTree.DropLocation dropLocation = (JTree.DropLocation) support.getDropLocation();&lt;br /&gt;
        TreePath path = dropLocation.getPath();&lt;br /&gt;
        Transferable transferable = support.getTransferable();&lt;br /&gt;
        String transferData;&lt;br /&gt;
        try {&lt;br /&gt;
          transferData = (String) transferable.getTransferData(DataFlavor.stringFlavor);&lt;br /&gt;
        } catch (IOException e) {&lt;br /&gt;
          return false;&lt;br /&gt;
        } catch (UnsupportedFlavorException e) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        int childIndex = dropLocation.getChildIndex();&lt;br /&gt;
        if (childIndex == -1) {&lt;br /&gt;
          childIndex = model.getChildCount(path.getLastPathComponent());&lt;br /&gt;
        }&lt;br /&gt;
        DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(transferData);&lt;br /&gt;
        DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) path.getLastPathComponent();&lt;br /&gt;
        model.insertNodeInto(newNode, parentNode, childIndex);&lt;br /&gt;
        TreePath newPath = path.pathByAddingChild(newNode);&lt;br /&gt;
        tree.makeVisible(newPath);&lt;br /&gt;
        tree.scrollRectToVisible(tree.getPathBounds(newPath));&lt;br /&gt;
        return true;&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    JScrollPane pane = new JScrollPane(tree);&lt;br /&gt;
    f.add(pane, BorderLayout.CENTER);&lt;br /&gt;
    tree.setDropMode(DropMode.INSERT);&lt;br /&gt;
    f.setSize(300, 400);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
        &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Set tree drag mode to DropMode.ON ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
&lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.datatransfer.DataFlavor;&lt;br /&gt;
import java.awt.datatransfer.Transferable;&lt;br /&gt;
import java.awt.datatransfer.UnsupportedFlavorException;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import javax.swing.DropMode;&lt;br /&gt;
import javax.swing.JComboBox;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.JTree;&lt;br /&gt;
import javax.swing.TransferHandler;&lt;br /&gt;
import javax.swing.tree.DefaultMutableTreeNode;&lt;br /&gt;
import javax.swing.tree.DefaultTreeModel;&lt;br /&gt;
import javax.swing.tree.TreePath;&lt;br /&gt;
public class DndTree {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    JPanel top = new JPanel(new BorderLayout());&lt;br /&gt;
    JLabel dragLabel = new JLabel(&amp;quot;Drag me:&amp;quot;);&lt;br /&gt;
    JTextField text = new JTextField();&lt;br /&gt;
    text.setDragEnabled(true);&lt;br /&gt;
    top.add(dragLabel, BorderLayout.WEST);&lt;br /&gt;
    top.add(text, BorderLayout.CENTER);&lt;br /&gt;
    f.add(top, BorderLayout.NORTH);&lt;br /&gt;
    final JTree tree = new JTree();&lt;br /&gt;
    final DefaultTreeModel model = (DefaultTreeModel) tree.getModel();&lt;br /&gt;
    tree.setTransferHandler(new TransferHandler() {&lt;br /&gt;
      public boolean canImport(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!support.isDataFlavorSupported(DataFlavor.stringFlavor) || !support.isDrop()) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JTree.DropLocation dropLocation = (JTree.DropLocation) support.getDropLocation();&lt;br /&gt;
        return dropLocation.getPath() != null;&lt;br /&gt;
      }&lt;br /&gt;
      public boolean importData(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!canImport(support)) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JTree.DropLocation dropLocation = (JTree.DropLocation) support.getDropLocation();&lt;br /&gt;
        TreePath path = dropLocation.getPath();&lt;br /&gt;
        Transferable transferable = support.getTransferable();&lt;br /&gt;
        String transferData;&lt;br /&gt;
        try {&lt;br /&gt;
          transferData = (String) transferable.getTransferData(DataFlavor.stringFlavor);&lt;br /&gt;
        } catch (IOException e) {&lt;br /&gt;
          return false;&lt;br /&gt;
        } catch (UnsupportedFlavorException e) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        int childIndex = dropLocation.getChildIndex();&lt;br /&gt;
        if (childIndex == -1) {&lt;br /&gt;
          childIndex = model.getChildCount(path.getLastPathComponent());&lt;br /&gt;
        }&lt;br /&gt;
        DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(transferData);&lt;br /&gt;
        DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) path.getLastPathComponent();&lt;br /&gt;
        model.insertNodeInto(newNode, parentNode, childIndex);&lt;br /&gt;
        TreePath newPath = path.pathByAddingChild(newNode);&lt;br /&gt;
        tree.makeVisible(newPath);&lt;br /&gt;
        tree.scrollRectToVisible(tree.getPathBounds(newPath));&lt;br /&gt;
        return true;&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    JScrollPane pane = new JScrollPane(tree);&lt;br /&gt;
    f.add(pane, BorderLayout.CENTER);&lt;br /&gt;
    tree.setDropMode(DropMode.ON);&lt;br /&gt;
    f.setSize(300, 400);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
        &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Set tree drag mode to DropMode.ON_OR_INSERT ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.datatransfer.DataFlavor;&lt;br /&gt;
import java.awt.datatransfer.Transferable;&lt;br /&gt;
import java.awt.datatransfer.UnsupportedFlavorException;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import javax.swing.DropMode;&lt;br /&gt;
import javax.swing.JComboBox;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.JTree;&lt;br /&gt;
import javax.swing.TransferHandler;&lt;br /&gt;
import javax.swing.tree.DefaultMutableTreeNode;&lt;br /&gt;
import javax.swing.tree.DefaultTreeModel;&lt;br /&gt;
import javax.swing.tree.TreePath;&lt;br /&gt;
public class DndTree {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    JPanel top = new JPanel(new BorderLayout());&lt;br /&gt;
    JLabel dragLabel = new JLabel(&amp;quot;Drag me:&amp;quot;);&lt;br /&gt;
    JTextField text = new JTextField();&lt;br /&gt;
    text.setDragEnabled(true);&lt;br /&gt;
    top.add(dragLabel, BorderLayout.WEST);&lt;br /&gt;
    top.add(text, BorderLayout.CENTER);&lt;br /&gt;
    f.add(top, BorderLayout.NORTH);&lt;br /&gt;
    final JTree tree = new JTree();&lt;br /&gt;
    final DefaultTreeModel model = (DefaultTreeModel) tree.getModel();&lt;br /&gt;
    tree.setTransferHandler(new TransferHandler() {&lt;br /&gt;
      public boolean canImport(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!support.isDataFlavorSupported(DataFlavor.stringFlavor) || !support.isDrop()) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JTree.DropLocation dropLocation = (JTree.DropLocation) support.getDropLocation();&lt;br /&gt;
        return dropLocation.getPath() != null;&lt;br /&gt;
      }&lt;br /&gt;
      public boolean importData(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!canImport(support)) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JTree.DropLocation dropLocation = (JTree.DropLocation) support.getDropLocation();&lt;br /&gt;
        TreePath path = dropLocation.getPath();&lt;br /&gt;
        Transferable transferable = support.getTransferable();&lt;br /&gt;
        String transferData;&lt;br /&gt;
        try {&lt;br /&gt;
          transferData = (String) transferable.getTransferData(DataFlavor.stringFlavor);&lt;br /&gt;
        } catch (IOException e) {&lt;br /&gt;
          return false;&lt;br /&gt;
        } catch (UnsupportedFlavorException e) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        int childIndex = dropLocation.getChildIndex();&lt;br /&gt;
        if (childIndex == -1) {&lt;br /&gt;
          childIndex = model.getChildCount(path.getLastPathComponent());&lt;br /&gt;
        }&lt;br /&gt;
        DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(transferData);&lt;br /&gt;
        DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) path.getLastPathComponent();&lt;br /&gt;
        model.insertNodeInto(newNode, parentNode, childIndex);&lt;br /&gt;
        TreePath newPath = path.pathByAddingChild(newNode);&lt;br /&gt;
        tree.makeVisible(newPath);&lt;br /&gt;
        tree.scrollRectToVisible(tree.getPathBounds(newPath));&lt;br /&gt;
        return true;&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    JScrollPane pane = new JScrollPane(tree);&lt;br /&gt;
    f.add(pane, BorderLayout.CENTER);&lt;br /&gt;
    tree.setDropMode(DropMode.ON_OR_INSERT);&lt;br /&gt;
    f.setSize(300, 400);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
        &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Set tree DropMode to DropMode.USE_SELECTION ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.BorderLayout;&lt;br /&gt;
import java.awt.datatransfer.DataFlavor;&lt;br /&gt;
import java.awt.datatransfer.Transferable;&lt;br /&gt;
import java.awt.datatransfer.UnsupportedFlavorException;&lt;br /&gt;
import java.awt.event.ActionEvent;&lt;br /&gt;
import java.awt.event.ActionListener;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import javax.swing.DropMode;&lt;br /&gt;
import javax.swing.JComboBox;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JLabel;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.JTree;&lt;br /&gt;
import javax.swing.TransferHandler;&lt;br /&gt;
import javax.swing.tree.DefaultMutableTreeNode;&lt;br /&gt;
import javax.swing.tree.DefaultTreeModel;&lt;br /&gt;
import javax.swing.tree.TreePath;&lt;br /&gt;
public class DndTree {&lt;br /&gt;
  public static void main(String args[]) {&lt;br /&gt;
    JFrame f = new JFrame();&lt;br /&gt;
    f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    JPanel top = new JPanel(new BorderLayout());&lt;br /&gt;
    JLabel dragLabel = new JLabel(&amp;quot;Drag me:&amp;quot;);&lt;br /&gt;
    JTextField text = new JTextField();&lt;br /&gt;
    text.setDragEnabled(true);&lt;br /&gt;
    top.add(dragLabel, BorderLayout.WEST);&lt;br /&gt;
    top.add(text, BorderLayout.CENTER);&lt;br /&gt;
    f.add(top, BorderLayout.NORTH);&lt;br /&gt;
    final JTree tree = new JTree();&lt;br /&gt;
    final DefaultTreeModel model = (DefaultTreeModel) tree.getModel();&lt;br /&gt;
    tree.setTransferHandler(new TransferHandler() {&lt;br /&gt;
      public boolean canImport(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!support.isDataFlavorSupported(DataFlavor.stringFlavor) || !support.isDrop()) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JTree.DropLocation dropLocation = (JTree.DropLocation) support.getDropLocation();&lt;br /&gt;
        return dropLocation.getPath() != null;&lt;br /&gt;
      }&lt;br /&gt;
      public boolean importData(TransferHandler.TransferSupport support) {&lt;br /&gt;
        if (!canImport(support)) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        JTree.DropLocation dropLocation = (JTree.DropLocation) support.getDropLocation();&lt;br /&gt;
        TreePath path = dropLocation.getPath();&lt;br /&gt;
        Transferable transferable = support.getTransferable();&lt;br /&gt;
        String transferData;&lt;br /&gt;
        try {&lt;br /&gt;
          transferData = (String) transferable.getTransferData(DataFlavor.stringFlavor);&lt;br /&gt;
        } catch (IOException e) {&lt;br /&gt;
          return false;&lt;br /&gt;
        } catch (UnsupportedFlavorException e) {&lt;br /&gt;
          return false;&lt;br /&gt;
        }&lt;br /&gt;
        int childIndex = dropLocation.getChildIndex();&lt;br /&gt;
        if (childIndex == -1) {&lt;br /&gt;
          childIndex = model.getChildCount(path.getLastPathComponent());&lt;br /&gt;
        }&lt;br /&gt;
        DefaultMutableTreeNode newNode = new DefaultMutableTreeNode(transferData);&lt;br /&gt;
        DefaultMutableTreeNode parentNode = (DefaultMutableTreeNode) path.getLastPathComponent();&lt;br /&gt;
        model.insertNodeInto(newNode, parentNode, childIndex);&lt;br /&gt;
        TreePath newPath = path.pathByAddingChild(newNode);&lt;br /&gt;
        tree.makeVisible(newPath);&lt;br /&gt;
        tree.scrollRectToVisible(tree.getPathBounds(newPath));&lt;br /&gt;
        return true;&lt;br /&gt;
      }&lt;br /&gt;
    });&lt;br /&gt;
    JScrollPane pane = new JScrollPane(tree);&lt;br /&gt;
    f.add(pane, BorderLayout.CENTER);&lt;br /&gt;
    tree.setDropMode(DropMode.USE_SELECTION);&lt;br /&gt;
    f.setSize(300, 400);&lt;br /&gt;
    f.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
        &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Transfer both Text and Color between JTextField and JTextArea ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- start source code --&amp;gt;&lt;br /&gt;
   &lt;br /&gt;
    &amp;lt;source lang=&amp;quot;java&amp;quot;&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
import java.awt.Color;&lt;br /&gt;
import java.awt.datatransfer.DataFlavor;&lt;br /&gt;
import java.awt.datatransfer.Transferable;&lt;br /&gt;
import java.awt.datatransfer.UnsupportedFlavorException;&lt;br /&gt;
import java.io.IOException;&lt;br /&gt;
import javax.swing.JComponent;&lt;br /&gt;
import javax.swing.JFrame;&lt;br /&gt;
import javax.swing.JPanel;&lt;br /&gt;
import javax.swing.JScrollPane;&lt;br /&gt;
import javax.swing.JTextArea;&lt;br /&gt;
import javax.swing.JTextField;&lt;br /&gt;
import javax.swing.TransferHandler;&lt;br /&gt;
import javax.swing.text.JTextComponent;&lt;br /&gt;
public class DnDDemo2 {&lt;br /&gt;
  public static void main(String[] args) {&lt;br /&gt;
    JFrame frame = new JFrame();&lt;br /&gt;
    frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);&lt;br /&gt;
    frame.setContentPane(new JPanel());&lt;br /&gt;
    JTextField textField = new JTextField(25);&lt;br /&gt;
    textField.setText(&amp;quot;Let&amp;quot;s swing higher&amp;quot;);&lt;br /&gt;
    frame.add(textField);&lt;br /&gt;
    JTextArea textArea = new JTextArea(&amp;quot;Demonstrating\ndrag and drop&amp;quot;);&lt;br /&gt;
    textArea.setForeground(Color.red);&lt;br /&gt;
    frame.add(new JScrollPane(textArea));&lt;br /&gt;
    textArea.setDragEnabled(true);&lt;br /&gt;
    textField.setDragEnabled(true);&lt;br /&gt;
    TextColorTransferHandler transferHandler = new TextColorTransferHandler();&lt;br /&gt;
    textArea.setTransferHandler(transferHandler);&lt;br /&gt;
    textField.setTransferHandler(transferHandler);&lt;br /&gt;
    frame.pack();&lt;br /&gt;
    frame.setVisible(true);&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class TextColorTransferHandler extends TransferHandler {&lt;br /&gt;
  public int getSourceActions(JComponent c) {&lt;br /&gt;
    return COPY_OR_MOVE;&lt;br /&gt;
  }&lt;br /&gt;
  protected Transferable createTransferable(JComponent component) {&lt;br /&gt;
    String text = ((JTextComponent) component).getText();&lt;br /&gt;
    Color color = component.getForeground();&lt;br /&gt;
    TextColor transferable = new TextColor(text, color);&lt;br /&gt;
    return transferable;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean canImport(JComponent c, DataFlavor[] flavors) {&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
  public boolean importData(JComponent component, Transferable transferable) {&lt;br /&gt;
    String colorMimeType = DataFlavor.javaJVMLocalObjectMimeType + &amp;quot;;class=java.awt.Color&amp;quot;;&lt;br /&gt;
    JTextComponent textComponent = (JTextComponent) component;&lt;br /&gt;
    try {&lt;br /&gt;
      DataFlavor colorFlavor = new DataFlavor(colorMimeType);&lt;br /&gt;
      Color color = (Color) transferable.getTransferData(colorFlavor);&lt;br /&gt;
      String text = (String) transferable.getTransferData(DataFlavor.stringFlavor);&lt;br /&gt;
      textComponent.setForeground(color);&lt;br /&gt;
      textComponent.setText(text);&lt;br /&gt;
    } catch (Exception e) {&lt;br /&gt;
      e.printStackTrace();&lt;br /&gt;
    }&lt;br /&gt;
    return true;&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
class TextColor implements Transferable {&lt;br /&gt;
  private String text;&lt;br /&gt;
  private Color color;&lt;br /&gt;
  private DataFlavor[] flavors;&lt;br /&gt;
  public TextColor(String text, Color color) {&lt;br /&gt;
    String colorMimeType = DataFlavor.javaJVMLocalObjectMimeType + &amp;quot;;class=java.awt.Color&amp;quot;;&lt;br /&gt;
    DataFlavor colorFlavor = null;&lt;br /&gt;
    try {&lt;br /&gt;
      colorFlavor = new DataFlavor(colorMimeType);&lt;br /&gt;
    } catch (ClassNotFoundException e) {&lt;br /&gt;
    }&lt;br /&gt;
    flavors = new DataFlavor[2];&lt;br /&gt;
    flavors[0] = DataFlavor.stringFlavor;&lt;br /&gt;
    flavors[1] = colorFlavor;&lt;br /&gt;
    this.text = text;&lt;br /&gt;
    this.color = color;&lt;br /&gt;
  }&lt;br /&gt;
  public DataFlavor[] getTransferDataFlavors() {&lt;br /&gt;
    return (DataFlavor[]) flavors.clone();&lt;br /&gt;
  }&lt;br /&gt;
  public boolean isDataFlavorSupported(DataFlavor flavor) {&lt;br /&gt;
    for (int i = 0; i &amp;lt; flavors.length; i++) {&lt;br /&gt;
      if (flavor.equals(flavors[i])) {&lt;br /&gt;
        return true;&lt;br /&gt;
      }&lt;br /&gt;
    }&lt;br /&gt;
    return false;&lt;br /&gt;
  }&lt;br /&gt;
  public Object getTransferData(DataFlavor flavor) throws UnsupportedFlavorException, IOException {&lt;br /&gt;
    if (flavor.equals(flavors[0])) {&lt;br /&gt;
      return text;&lt;br /&gt;
    } else if (flavor.equals(flavors[1])) {&lt;br /&gt;
      return color;&lt;br /&gt;
    } else {&lt;br /&gt;
      throw new UnsupportedFlavorException(flavor);&lt;br /&gt;
    }&lt;br /&gt;
  }&lt;br /&gt;
}&lt;br /&gt;
//Reference:&lt;br /&gt;
//Java 6 New Features: A Tutorial&lt;br /&gt;
//by Budi Kurniawan &lt;br /&gt;
//Brainy Software Corp. 2006&lt;br /&gt;
//Chapter 4 - Networking&lt;br /&gt;
//# ISBN-10: 0975212885&lt;br /&gt;
//# ISBN-13: 978-0975212882&lt;br /&gt;
        &amp;lt;/source&amp;gt;&lt;br /&gt;
    &lt;br /&gt;
   &lt;br /&gt;
  &amp;lt;!-- end source code --&amp;gt;&lt;/div&gt;</summary>
			</entry>

	</feed>