简体   繁体   English

Javafx FXML布局拖放

[英]Javafx FXML layout drag and drop

I liked to write a Nine Men's Morris game in Javafx with FXML layout and I will use a Scene Builder for the graphics part. 我喜欢用Javafx用FXML布局编写一个九人莫里斯游戏,我将使用Scene Builder作为图形部分。

Could somebody write me a small example about drag and drop? 有人可以给我写一个有关拖放的小例子吗? Since it is a Nine Men's Morris game I only like to drag and have some points where I can drop the pieces. 由于这是九人莫里斯游戏,所以我只喜欢拖动并有一些可以放下碎片的点。

Simple Example of Drag And Drop 拖放的简单示例

public class JavaFX_DragAndDrop extends Application
{

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

    @Override
    public void start(Stage primaryStage)
    {
        primaryStage.setTitle("Drag & Drop Example");
        Group root = new Group();
        Scene scene = new Scene(root, 350, 300);

        HBox hBox = new HBox();

        setupGestureTarget(scene, hBox);

        root.getChildren().add(hBox);
        primaryStage.setScene(scene);
        primaryStage.show();
        primaryStage.show();
    }

    void setupGestureTarget(final Scene target, final HBox targetBox)
    {

        target.setOnDragOver(new EventHandler<DragEvent>()
        {
            @Override
            public void handle(DragEvent event)
            {
                /* data is dragged over the target */
                System.out.println("onDragOver");

                Dragboard db = event.getDragboard();
                if (db.hasFiles())
                {
                    event.acceptTransferModes(TransferMode.COPY);
                }

                event.consume();
            }
        });

        target.setOnDragDropped(new EventHandler<DragEvent>()
        {
            @Override
            public void handle(DragEvent event)
            {
                /* data dropped */
                System.out.println("onDragDropped");

                Dragboard db = event.getDragboard();

                if (db.hasFiles())
                {

                    for (File file : db.getFiles())
                    {
                        String absolutePath = file.getAbsolutePath();
                        Image dbimage = new Image(absolutePath);
                        ImageView dbImageView = new ImageView();
                        dbImageView.setImage(dbimage);
                        targetBox.getChildren().add(dbImageView);
                    }

                    event.setDropCompleted(true);
                }
                else
                {
                    event.setDropCompleted(false);
                }

                event.consume();
            }
        });

    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM