gpt4 book ai didi

JavaFx 将文件拖放到程序中

转载 作者:太空狗 更新时间:2023-10-29 22:46:41 24 4
gpt4 key购买 nike

嘿社区我想知道是否可以创建一个程序,允许用户从硬盘驱动器上的任何位置(桌面、文档文件夹、视频文件夹)拖动文件并将其放入程序窗口.

我正在创建一个媒体播放器,我希望能够通过将 MP4 拖放到窗口中来播放视频。我需要将文件存储在变量中,还是只需要将文件的位置存储到变量中。此外,保持对跨平台的支持也很重要。

我正在使用 JavaFx 和 java 7 update 79 jdk。

提前致谢。

最佳答案

这是一个简单的拖放示例,仅设置文件名和位置。将文件拖到它,它会显示它们的名称和位置。一旦您知道实际播放文件应该是完全独立的事情。它主要取自 Oracle 的文档:https://docs.oracle.com/javafx/2/drag_drop/jfxpub-drag_drop.htm

最小的实现需要两个 EventHandler 设置 OnDragOver 和 OnDragDropped。

public class DragAndDropTest extends Application {

@Override
public void start(Stage primaryStage) {
Label label = new Label("Drag a file to me.");
Label dropped = new Label("");
VBox dragTarget = new VBox();
dragTarget.getChildren().addAll(label,dropped);
dragTarget.setOnDragOver(new EventHandler<DragEvent>() {

@Override
public void handle(DragEvent event) {
if (event.getGestureSource() != dragTarget
&& event.getDragboard().hasFiles()) {
/* allow for both copying and moving, whatever user chooses */
event.acceptTransferModes(TransferMode.COPY_OR_MOVE);
}
event.consume();
}
});

dragTarget.setOnDragDropped(new EventHandler<DragEvent>() {

@Override
public void handle(DragEvent event) {
Dragboard db = event.getDragboard();
boolean success = false;
if (db.hasFiles()) {
dropped.setText(db.getFiles().toString());
success = true;
}
/* let the source know whether the string was successfully
* transferred and used */
event.setDropCompleted(success);

event.consume();
}
});


StackPane root = new StackPane();
root.getChildren().add(dragTarget);

Scene scene = new Scene(root, 500, 250);

primaryStage.setTitle("Drag Test");
primaryStage.setScene(scene);
primaryStage.show();
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
launch(args);
}

}

关于JavaFx 将文件拖放到程序中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32534113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com