我想在 MediaView 中拖放音频文件。这是我的代码
@FXML
private void initialize() {
MediaView audioMediaView = new MediaView();
EventHandler<DragEvent> dragOverHandler = event -> {
Object gestSource = event.getGestureSource();
DataFormat mimeAudio = new DataFormat("audio/*");
DataFormat mimeVideo = new DataFormat("video/*");
if ((gestSource != audioMediaView || gestSource != audioListView) &&
(event.getDragboard().hasContent(mimeAudio) ||
event.getDragboard().hasContent(mimeVideo))) {
event.acceptTransferModes(TransferMode.ANY);
System.out.println("Drag Over");
}
event.consume();
};
EventHandler<DragEvent> dragDroppedHandler = event -> {
try {
Dragboard db = event.getDragboard();
boolean success = false;
DataFormat mimeAudio = new DataFormat("audio/*");
DataFormat mimeVideo = new DataFormat("video/*");
if (db.hasContent(mimeAudio) || db.hasContent(mimeVideo)) {
File file = db.getFiles().get(0);
javafx.scene.media.Media media = new javafx.scene.media.Media(file.toURI().toString());
audioMediaView.setMediaPlayer(new MediaPlayer(media));
success = true;
System.out.println("Drag Dropped");
}
/* let the source know whether the string was successfully
* transferred and used */
event.setDropCompleted(success);
event.consume();
} catch (Exception e) {
e.printStackTrace();
}
};
//....other codes
audioMediaView.setOnDragOver(dragOverHandler);
audioMediaView.setOnDragDropped(dragDroppedHandler);
}
但是当我拖动音频文件时收到此消息
Java Messsge:DataFormat 'audio/*' already exists.
有什么建议么?是哑剧'audio/*'
还是'video/*'
不正确?我可以对仅拖放音频或视频文件进行编码吗?谢谢和对不起我的英语。