当前位置: 首页 > 知识库问答 >
问题:

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

巫马翰翮
2023-03-14

我有一个代码,可以从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();
        }
    }
}

我知道错误在“MyClassObject res=(MyClassObject)db.getContent(customFormat);”行,因为失败时返回的异常是“java.lang.String不能转换为MyClassObject”。

但是,在调试中不会发生此错误。演员阵容成功!

有人经历过吗?

共有1个答案

周飞语
2023-03-14

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

 类似资料:
  • 我正在尝试将自定义对象从JPanel拖放到JavaFX场景<为了实现这一点,我创建了一个带有自定义对象和自定义TransferHandler的简单应用程序。在本例中,我的问题是,当我在

  • 我在网格窗格中用两个ImageView做拖放测试。我的问题是,当我完成拖放并将目标imageview移动到源imageview并释放鼠标时,我错误地以显示“img2”中的图片而不是“img1”中的图片结束。当我注释掉“setOnDragExited”方法时,我最终得到了正确的图像“img1”,任何建议都将不胜感激。

  • 所以我正在编写一个脚本,它从动态网页中抓取一些数据并将其提交到我的数据库表中。为此,我在Python中使用了Selenium。在我重新启动我的系统之前,一切都非常好。现在chrome只在无头模式下工作,当我注释掉该选项以便我可以看到chrome浏览器的实际窗口时,我得到了这个错误 selenium.common.exceptions。WebDriverException:消息:未知错误:Chrom

  • 我知道这可以在Servlet3.0中通过@Webservlet注释实现,在这里您只需分配url模式,而不必在web.xml中进行任何配置。是否有一种方法可以通过编程方式为运行Servlet2.5的应用程序分配servlets url模式? 我正在创建一个库,多个应用程序将依赖于它,并试图使它,以便这些应用程序中的每一个都不必显式配置任何servlet url映射,我正在创建的库中的servlet在

  • 我试着去看其他的代码例子,但是它们和我的代码比较相似,但是我的应用程序仍然会因为同样的错误而崩溃。 这是我使用firebase文档的指导方针编写的代码: 上面的代码正在将otp发送到给定的号码,但是它崩溃了,并且cat-log显示了上面提到的错误。