Ich habs. Es wird nicht häufig was über das Thema geschrieben, aber ich hab doch was gefunden und meine Lösung sieht nun so aus:
(Anm.: Es existierte ein JTextField mit dem Namen jTextField1)
|
Source code
|
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
|
jTextField1.setBounds(96, 8, 241, 24);
jTextField1.setText("");
cp.add(jTextField1);
// Drag-and-Drop mit jTextField1 verwenden
DropTarget dt = new DropTarget();
dt.setComponent(jTextField1);
try
{
dt.addDropTargetListener(new DropTargetListener() {
public void dragEnter(DropTargetDragEvent dEvent) {
}
public void dragOver(DropTargetDragEvent dEvent) {
}
public void dragExit(DropTargetEvent dEvent) {
}
public void dropActionChanged(DropTargetDragEvent dEvent) {
}
public void drop(DropTargetDropEvent dEvent) {
if ((dEvent.getSourceActions() & DnDConstants.ACTION_COPY) == 0)
{
dEvent.rejectDrop();
}
else
{
dEvent.acceptDrop(DnDConstants.ACTION_COPY);
Transferable trans = dEvent.getTransferable();
DataFlavor [] currentFlavors = trans.getTransferDataFlavors();
DataFlavor selectedFlavor = null;
for (int i = 0; i < currentFlavors.length; i++)
{
if (DataFlavor.javaFileListFlavor.equals(currentFlavors[i]))
{
selectedFlavor = currentFlavors[i];
break;
}
}
if (selectedFlavor != null)
{
try
{
Iterator dateien = ((java.util.List)trans.getTransferData(selectedFlavor)).iterator();
if (dateien.hasNext())
{
File f = (File)dateien.next();
jTextField1.setText(f.getPath());
}
}
catch (Exception ex)
{
System.out.println(ex.getMessage());
}
}
}
}
});
}
catch (TooManyListenersException ex)
{
System.out.println(ex.getMessage());
}
|
Außerdem hatte ich folgende Pakte in der Klasse gebraucht (das wichtigste ist java.awt.dnd):
|
Source code
|
1
2
3
4
5
6
7
|
import java.awt.*;
import java.awt.event.*;
import java.awt.dnd.*;
import java.awt.datatransfer.*;
import java.util.*;
import javax.swing.*;
import java.io.*;
|
Danke trotzdem.