【问题标题】:Drag and Drop stops working after serialization and deserialization in JavaJava中的序列化和反序列化后拖放停止工作
【发布时间】:2011-12-19 20:23:23
【问题描述】:

我正在开发一个 Java 应用程序。应用程序的框架结构如下。 首先我有一个包含面板的 JFrame。在面板中我有许多 JLists 并且在 Jlists 之间我已经实现了拖放功能。 现在每次关闭应用程序之前我都想保存 UI 的内容。我正在使用序列化和反序列化,并且我已经成功实现了它。反序列化后,除了拖放之外,所有事情都按预期工作。我没有收到任何错误,但没有为 Jlists 建立拖放处理程序。我试图在拖放处理程序中放置一些打印语句,但没有得到任何结果。谁能告诉我这可能是什么原因?

以下是我添加到每个 Jlist 组件中的 DnDhandler 的定义

$private ListTransferHandler dndHandler = new ListTransferHandler();

和我的 ListTranferHandler 类类似

$public class ListTransferHandler extends TransferHandler implements Serializable{

private static final long serialVersionUID = -3484014856820532284L;
//followed by all methods
    // canImport
    // createtranferable
    // getSourceActions
    // importData
    //exportDone
}

【问题讨论】:

  • 我猜想,我会首先在你的代码中寻找有 == 而不是 .equals() 的地方。你会帮自己一个忙,制作最小的可编译的、独立的代码来重现错误。人们可以通过这些信息更好地帮助您。
  • 虽然我已经通过序列化内容和避免序列化 UI 组件解决了这个问题,但我仍然会发布一个示例代码,它可以让问题变得清晰,以便可以识别实际问题

标签: java serialization drag-and-drop deserialization


【解决方案1】:

一般来说,在使用swing时,虽然各种组件都是可序列化的,但最好不要直接序列化它们。如果你想持久化数据,序列化数据,而不是摆动元素本身。

【讨论】:

    猜你喜欢
    • 2013-01-08
    • 2019-03-17
    • 2011-08-17
    • 2012-09-22
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    相关资源
    最近更新 更多