拖放Swing到JavaFX在没有调试模式的情况下不工作

拖放Swing到JavaFX在没有调试模式的情况下不工作,javafx,drag-and-drop,Javafx,Drag And Drop,我有一个从Swing应用程序获取拖动事件的代码。然后,代码将元素放入JavaFX表视图中 如果我在调试模式下运行,这段代码可以完美地工作。但是,如果调试失败,它将无法工作 private static final DataFormat customFormat = new DataFormat("application/x-java-serialized-object"); this.setOnDragOver(new EventHandler<DragEvent>() {

我有一个从Swing应用程序获取拖动事件的代码。然后,代码将元素放入JavaFX表视图中

如果我在调试模式下运行,这段代码可以完美地工作。但是,如果调试失败,它将无法工作

private static final DataFormat customFormat = new DataFormat("application/x-java-serialized-object");

this.setOnDragOver(new EventHandler<DragEvent>() {
    public void handle(DragEvent event) {
        event.acceptTransferModes(TransferMode.ANY);
        event.consume();
    }
});

this.setOnDragDropped(new EventHandler<DragEvent>() {
    public void handle(DragEvent event) {
        try {
            Dragboard db = event.getDragboard();
            if (db == null) {
                alertInfo();
            } else {
                MyClassObject res = (MyClassObject) db.getContent(customFormat);
                // do stuffs
        } catch (Exception e) {
            LOGGER.error(e.getMessage());
        } finally {
            event.setDropCompleted(true);
            event.consume();
        }
    }
}
private static final DataFormat customFormat=new DataFormat(“应用程序/x-java-serialized-object”);
this.setOnDragOver(新的EventHandler()){
公共无效句柄(DrageEvent事件){
event.acceptTransferModes(TransferMode.ANY);
event.consume();
}
});
this.setOnDragDrop(新的EventHandler()){
公共无效句柄(DrageEvent事件){
试一试{
Dragboard db=event.getDragboard();
if(db==null){
alertInfo();
}否则{
MyClassObject res=(MyClassObject)db.getContent(customFormat);
//做事
}捕获(例外e){
LOGGER.error(例如getMessage());
}最后{
事件。setDropCompleted(true);
event.consume();
}
}
}
我知道错误在“MyClassObject res=(MyClassObject)db.getContent(customFormat);”行中,因为失败时返回的异常是“java.lang.String不能转换为MyClassObject”

但是,在调试中不会发生此错误。强制转换成功


有人经历过吗?

它似乎与Java缓存有关。
清除Java控件中的所有缓存后,代码将正确运行。

它似乎与Java缓存相关。 清除Java控件中的所有缓存后,代码将正确运行