如果没有调试模式,将Drop Swing拖到JavaFX无法正常工作 [英] Drag Drop Swing to JavaFX not working without debug mode

查看:44
本文介绍了如果没有调试模式,将Drop Swing拖到JavaFX无法正常工作的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有一个代码,该代码获取来自Swing应用程序的Drag事件.然后,代码将元素放入JavaFX TableView中.

I have a code that gets a Drag event coming from a Swing application. The code then drop the elements into a JavaFX TableView.

如果我在调试"模式下运行,则此代码可完美运行.但是,如果我用完了Debug,就无法正常工作.

This code works perfectly if I run in Debug mode. But it does not work if I run out of Debug.

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();
        }
    }
}

我知道错误出在"MyClassObject res =(MyClassObject)db.getContent(customFormat);"中行,因为失败时返回的异常是"java.lang.String无法强制转换为MyClassObject".

I know the error is in the "MyClassObject res = (MyClassObject) db.getContent (customFormat);" line, because the return exception when it fails is "java.lang.String can not be cast to MyClassObject".

但是,在调试中不会发生此错误.投射成功!

However, in debug this error does not occur. The cast is successful!

有人经历过吗?

推荐答案

它似乎与Java缓存有关.清除Java Control中的所有缓存后,代码即可正确运行.

It seems related with Java cache. The code runs correctly after clean all cache in Java Control.

这篇关于如果没有调试模式,将Drop Swing拖到JavaFX无法正常工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆