1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82
|
package dnd;
import java.awt.BorderLayout;
import java.awt.Rectangle;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.Transferable;
import java.io.File;
import javax.swing.DefaultListModel;
import javax.swing.DropMode;
import javax.swing.JFrame;
import javax.swing.JList;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
import javax.swing.TransferHandler;
public class TextAreaDrop {
private JList list;
private JTextArea area;
private JFrame f;
public TextAreaDrop() {
// TODO Auto-generated method stub
list = new JList();
area = new JTextArea();
f = new JFrame();
DefaultListModel m = new DefaultListModel();
m.addElement("toto");
m.addElement("titi");
m.addElement("tata");
m.addElement("tutu");
m.addElement("tete");
list.setModel(m);
list.setDragEnabled(true);
area.setDropMode(DropMode.INSERT);
area.setDragEnabled(true);
area.setTransferHandler(new TransferHandler() {
@Override
public boolean canImport(TransferSupport support) {
if (!support.isDataFlavorSupported(DataFlavor.stringFlavor)) {
return false;
}
return true;
}
@Override
public boolean importData(TransferSupport support) {
if (!canImport(support)) {
return false;
}
Transferable transferable = support.getTransferable();
String data;
try {
data = (String) transferable
.getTransferData(DataFlavor.stringFlavor);
} catch (Exception e) {
return false;
}
JTextArea textArea = (JTextArea) support.getComponent();
textArea.append(data);
textArea.append(System.getProperty("line.separator"));
textArea.setCaretPosition(textArea.getDocument().getLength());
return true;
}
});
f.add(list, BorderLayout.NORTH);
f.add(new JScrollPane(area));
f.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
f.pack();
f.setLocationRelativeTo(null);
f.setVisible(true);
}
public static void main(String[] args) {
new TextAreaDrop();
}
} |