SWT Drag´n´Drop vom Desktop/Explorer

Swoop

Gesperrter Benutzer
Hallo Leute,

Ich habe ein Problem. Und zwar suche ich eine Möglichkeit, Bilder, Dateien, usw. vom Desktop bzw aus dem Explorer in einen Tree zu ziehen und den Pfad zur Datei zu speichern.

Ich hab zwar schon die ein oder andere Lösung gefunden aber davon sind alle in AWT geschrieben und diese bringen mich dann nicht weiter, da ich das ganze in SWT realisieren möchte.

Habt ihr ein Beispiel parat ? Mir würde es auch reichen, wenn es auf eine Shell oder Composite funktionieren würde. Den Rest würde ich dann selbst hinbekommen.

Grüße Swoop
 
G

Gast2

Gast
Also innerhalb einer SWT Anwendung, war das Tutorial immer hilfreich. Ich weiß nicht ob auch etwas für die sourcen außerhalb dabei ist.
DND in SWT
 

Swoop

Gesperrter Benutzer
Hm das Tut hatt ich auch schon über googel gefunden. ist auch sehr Hilfreich aber halt leider fehlt noch der Teil wenn mans vom Desktop rein zieht. Wenn ich versuche die AWT vorlagen abzuwandeln zeigt er mir schon wenn ich mit einer Datei über die Shell gehe ein schwarzes rundes Verboten zeichen an. Und das dragEnter Event wird auch nicht geworfen.
 
G

Gast2

Gast
Ja warum willst du auch das AWT benutzen, ich denke mal die benutzen einen ganz anderen Mechanismus.

Ich denk mal du brauchst einen DropTarget mit FileTransfer dann könnte es schon klappen.
Mach doch mal ein kleines KSKB mit einem Label und wie es bis jetzt aussieht.
 
Zuletzt bearbeitet von einem Moderator:

Swoop

Gesperrter Benutzer
Bezgl. AWT: Ja ich wollte einfach nur versuchen es nachzubauen. Dachte mir vllt wenn ich Glück habe funktioniert es ganz ähnlich.

Was ich bis jetzt habe ist nicht viel. Ich habe momentan eine Shell mit einer Liste auf die was gezogen werden können soll. Vorerst reicht es ja nur, dass die Liste dann mal ausgibt. "Dragged" damit ich weiß dass was ankommt. Wie ich an das File komme ist ja erst der zweite Schritt aber momentan macht er halt nicht viel mehr als das schwarze Verbotszeichen anzuzeigen sobald man mit einer Datei drüber fährt oder los lässt.

Hier mein KSKB:

Java:
public class TestGUI
{
	private Shell shell;

	/**
	 * Runs the application
	 */
	public void run()
	{
		final Display display = new Display();
		shell = new Shell(display);
		shell.setSize(250, 250);
		shell.setText("Test");
		shell.setLayout(new GridLayout());

		List list = new List(this.shell, SWT.BORDER);
		list.setLayoutData(new GridData(GridData.FILL_BOTH));

		DropTarget target = new DropTarget(list, DND.DROP_COPY);
		target.addDropListener(new DropTargetAdapter()
		{

			public void dragEnter(DropTargetEvent event)
			{
				System.out.println("Enter Drag Source");
			}

			public void drop(DropTargetEvent event)
			{
				System.out.println("DropFile");
			}
		});

		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
		display.dispose();
	}

	/**
	 * main-methode
	 * 
	 * @param args
	 *        {@link String}
	 */
	public static void main(String[] args)
	{
		new TestGUI().run();
	}
}
 

Swoop

Gesperrter Benutzer
Ja ich habs gerade gesehen.

Mit Transfers funktionierts. Habs auch schon in mein richtiges Programm eingebaut und funktioniert einwandfrei!
Danke!
 
G

Gast2

Gast
Java:
package a;

import java.io.File;

import org.eclipse.swt.SWT;
import org.eclipse.swt.dnd.DND;
import org.eclipse.swt.dnd.DropTarget;
import org.eclipse.swt.dnd.DropTargetAdapter;
import org.eclipse.swt.dnd.DropTargetEvent;
import org.eclipse.swt.dnd.FileTransfer;
import org.eclipse.swt.dnd.Transfer;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;

public class TestGUI {
	private Shell shell;

	/**
	 * Runs the application
	 */
	public void run() {
		final Display display = new Display();
		shell = new Shell(display);
		shell.setSize(250, 250);
		shell.setText("Test");
		shell.setLayout(new GridLayout());

		final Label label = new Label(this.shell, SWT.BORDER);
		label.setLayoutData(new GridData(GridData.FILL_BOTH));

		int operations = DND.DROP_MOVE | DND.DROP_COPY | DND.DROP_DEFAULT;
		DropTarget target = new DropTarget(label, operations);

		final FileTransfer fileTransfer = FileTransfer.getInstance();
		Transfer[] types = new Transfer[] { fileTransfer };
		target.setTransfer(types);

		target.addDropListener(new DropTargetAdapter() {

			public void dragEnter(DropTargetEvent event) {
				if (event.detail == DND.DROP_DEFAULT) {
					if ((event.operations & DND.DROP_COPY) != 0) {
						event.detail = DND.DROP_COPY;
					} else {
						event.detail = DND.DROP_NONE;
					}
				}
				// will accept text but prefer to have files dropped
				for (int i = 0; i < event.dataTypes.length; i++) {
					if (fileTransfer.isSupportedType(event.dataTypes[i])) {
						event.currentDataType = event.dataTypes[i];
						// files should only be copied
						if (event.detail != DND.DROP_COPY) {
							event.detail = DND.DROP_NONE;
						}
						break;
					}
				}

			}

			public void drop(DropTargetEvent event) {
				if (fileTransfer.isSupportedType(event.currentDataType)) {
					String[] files = (String[]) event.data;
					label.setText(files[0]);
				}

			}
		});

		shell.open();
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
			}
		}
		display.dispose();
	}

	/**
	 * main-methode
	 * 
	 * @param args
	 *            {@link String}
	 */
	public static void main(String[] args) {
		new TestGUI().run();
	}
}

EDIT: zu spät^^
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
Bluedaishi OutputStream -> Desktop AWT, Swing, JavaFX & SWT 6
I Erste Desktop Software - blutiger Anfänger AWT, Swing, JavaFX & SWT 4
I Variabeln speichern in Desktop Anwendung AWT, Swing, JavaFX & SWT 2
E JMenu erscheint nach RDP-Verbindung auf falschem Desktop AWT, Swing, JavaFX & SWT 1
C Open PDFs via Desktop.open(..) fails AWT, Swing, JavaFX & SWT 4
VfL_Freak AWT Browser öffnen und schließen via java.awt.Desktop AWT, Swing, JavaFX & SWT 4
Guybrush Threepwood Desktop.open(file) hängt AWT, Swing, JavaFX & SWT 4
B Java auf dem Desktop benutzen AWT, Swing, JavaFX & SWT 7
eLogic png transparent auf Desktop Zeichnen AWT, Swing, JavaFX & SWT 3
R Java Desktop Anwendung erstellen. Womit? AWT, Swing, JavaFX & SWT 3
T GUI ohne Rahmen auf Desktop AWT, Swing, JavaFX & SWT 3
T Programm vom Desktop starten! AWT, Swing, JavaFX & SWT 2
E Spinne die aufm desktop dem mauszeiger folgt! AWT, Swing, JavaFX & SWT 11
F fertige JApplets in Desktop Application einbinden AWT, Swing, JavaFX & SWT 4
F ansprechende Java Desktop Application AWT, Swing, JavaFX & SWT 2
T Swing JFileChooser --> Desktop und Laufwerke im "Suchen in" - Drop Down AWT, Swing, JavaFX & SWT 3
S Desktop Programmieren AWT, Swing, JavaFX & SWT 2
C Problem mit Desktop.getDesktop().open AWT, Swing, JavaFX & SWT 4
B Swing Sprünge in einer Swing Desktop Applikation AWT, Swing, JavaFX & SWT 2
F Screenshot vom Desktop machen? AWT, Swing, JavaFX & SWT 2
J Applikation als Desktop-"Widget" AWT, Swing, JavaFX & SWT 2
G avi-Datei mit Desktop.getDesktop().open(File) öffnen AWT, Swing, JavaFX & SWT 4
G Drag And Drop von Component (List, Tree) zum Desktop AWT, Swing, JavaFX & SWT 2
D Robot: Screenshot vom Desktop Hintergrund möglich ? AWT, Swing, JavaFX & SWT 3
vogella Java 6 - Desktop - Attachement AWT, Swing, JavaFX & SWT 3
K Desktop toolbar Problem AWT, Swing, JavaFX & SWT 2
A GUI-Verknüpfung auf dem Desktop AWT, Swing, JavaFX & SWT 12
S Direkt auf den Desktop zeichnen? AWT, Swing, JavaFX & SWT 17
B Fenstet am Desktop-Rand andocken? AWT, Swing, JavaFX & SWT 10
T JInternalFrames und Desktop-Elemente AWT, Swing, JavaFX & SWT 6
P JTree - Explorer mit nur eingeschränkter Anzeige AWT, Swing, JavaFX & SWT 17
H explorer in java - datein kopieren AWT, Swing, JavaFX & SWT 5
M Problem mit eigenem Menu Explorer AWT, Swing, JavaFX & SWT 6
B Dropdown-Menü im Explorer AWT, Swing, JavaFX & SWT 4
S Toolbar wie im Explorer? oder mozilla erstellen AWT, Swing, JavaFX & SWT 5
C Explorer Bar für Java? AWT, Swing, JavaFX & SWT 11
S Swing Element für Explorer-Fenster darstellung AWT, Swing, JavaFX & SWT 13
C File Explorer simulieren AWT, Swing, JavaFX & SWT 6
K Foto Explorer AWT, Swing, JavaFX & SWT 9
H Wie bastelt man eine Baumstruktur wie im Windows-Explorer? AWT, Swing, JavaFX & SWT 5
L windows explorer AWT, Swing, JavaFX & SWT 4
P XML-File in Java-App darstellen - wie im Internet Explorer AWT, Swing, JavaFX & SWT 2

Ähnliche Java Themen

Neue Themen


Oben