ドラッグのサンプル

package sample;

import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.input.ClipboardContent;
import javafx.scene.input.DataFormat;
import javafx.scene.input.Dragboard;
import javafx.scene.input.MouseEvent;
import javafx.scene.input.TransferMode;
import javafx.scene.paint.Color;
import javafx.scene.shape.ClosePath;
import javafx.scene.shape.LineTo;
import javafx.scene.shape.MoveTo;
import javafx.scene.shape.Path;
import javafx.stage.Stage;

/**
 * テキストをドラッグする JavaFX 2 サンプル
 */
public class Sample001 extends Application {
	@Override
	public void start(final Stage primaryStage) {
		primaryStage.setTitle("Drag figure");

		final Group root = new Group();

		{
			final Path path = new Path();
			root.getChildren().add(path);
			path.getElements().addAll(new MoveTo(10, 10), new LineTo(50, 195),
					new LineTo(175, 150), new LineTo(195, 50),
					new LineTo(10, 10), new ClosePath());
			path.setFill(Color.YELLOW);
			path.setStroke(Color.YELLOWGREEN);
			path.setStrokeWidth(5);
		}

		root.setOnDragDetected(new EventHandler<MouseEvent>() {
			@Override
			public void handle(final MouseEvent event) {
				System.out.println("ドラッグが開始されました。クリップボードに内容をセットします。");
				final Dragboard db = root.startDragAndDrop(TransferMode.COPY);
				final ClipboardContent content = new ClipboardContent();
				content.put(DataFormat.PLAIN_TEXT,
						"ドラッグされた図形ですが、ここではべたテキストへとダウングレードしています。");
				db.setContent(content);
				event.consume();
			}
		});

		primaryStage.setScene(new Scene(root, 200, 200));
		primaryStage.show();
	}

	public static void main(final String[] args) {
		launch(args);
	}
}

独自フォーマットの登録方法

独自フォーマットは以下のように利用するとのことです。MIME 風の指定にするのが JavaFX 推奨形式とのことです。

独自フォーマットの登録方法
	public static final DataFormat myFormat = new DataFormat(
			"x-myapp/data");
ドラッグ時のデータ設定方法
        content.put(myFormat, "何か独自形式のデータ");