使用弹出对话框进行Java Swing拖放

时间:2011-05-03 20:29:09

标签: java swing drag-and-drop

我想在Java Swing应用程序中使用以下行为:

  1. 用户拖放图标。
  2. 如果还应操作其他图标,则会提示用户提供模式对话框。
  3. 用户选择YES,NO或CANCEL(或关闭对话框)后,Java开始操作(复制/移动)图标(或取消/关闭时不执行任何操作)。
  4. TransferHandler.canImport()内,我可以看到放置目标,但不能看到图标。

    TransferHandler.exportDone()内,我可以看到图标,但不能看到放置目标。

    TransferHandler.importData()内我可以看到两者,但到那时已经太晚了,因为如果我正在执行TransferHandler.MOVE,那么TransferHandler.exportDone()已经删除了该图标。

    上面提到的行为是否可以使用Java Swing?如果是这样,我需要使用哪个版本的JDK / JRE以及如何实现它?

1 个答案:

答案 0 :(得分:2)

如果你想能够拖放项目,以及以编程方式移动/复制它们,你需要确保你有一个正确的模型设置,支持< EM>视图。这意味着您不应将业务逻辑直接编码到GUI代码中。该模型应该简单而独立,重点关注管理数据的实际任务。在您的情况下,您听起来只需要保存一些对象集合并提供将对象从一个集合移动/复制到另一个集合的方法。执行此操作的代码称为 controller (MVC - 如果您已熟悉此模式,请原谅我)。然后控制器将更新GUI以反映更改。同样,您的拖放操作将触发控制器操作,该操作会对模型执行类似的操作。