top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
package sample;
import javafx.application.Application;
import javafx.event.EventHandler;
import javafx.scene.Group;
import javafx.scene.Scene;
import javafx.scene.input.DataFormat;
import javafx.scene.input.DragEvent;
import javafx.scene.input.Dragboard;
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("Drop target");
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(325, 150),
new LineTo(375, 50), new LineTo(10, 10), new ClosePath());
path.setFill(Color.YELLOW);
path.setStroke(Color.YELLOWGREEN);
path.setStrokeWidth(5);
}
root.setOnDragOver(new EventHandler<DragEvent>() {
@Override
public void handle(final DragEvent event) {
final Dragboard db = event.getDragboard();
for (DataFormat df : db.getContentTypes()) {
if (df.equals(DataFormat.FILES)) {
System.out.println("ドラッグオーバー: ファイル: " + event.getDragboard().getFiles().get(0).toString());
event.acceptTransferModes(TransferMode.COPY);
break;
}
if (df.equals(DataFormat.PLAIN_TEXT)) {
System.out.println("ドラッグオーバー: 平分テキスト: " + event.getDragboard().getString());
event.acceptTransferModes(TransferMode.COPY);
break;
}
}
event.consume();
}
});
root.setOnDragDropped(new EventHandler<DragEvent>() {
@Override
public void handle(final DragEvent event) {
final Dragboard db = event.getDragboard();
// 未解明事項: Dragboard の DataFormat は、処理してほしいものから順にセットされているかどうか。
for (DataFormat df : db.getContentTypes()) {
if (df.equals(DataFormat.FILES)) {
primaryStage.setTitle("Dropped: " + db.getFiles().get(0).toString());
event.setDropCompleted(true);
break;
}
if (df.equals(DataFormat.PLAIN_TEXT)) {
primaryStage.setTitle("Dropped: " + db.getString());
event.setDropCompleted(true);
break;
}
}
event.consume();
}
});
primaryStage.setScene(new Scene(root, 400, 200));
primaryStage.show();
}
public static void main(final String[] args) {
launch(args);
}
}