我希望 Java Swing 应用程序具有以下行为:
- 用户拖放图标。
- 如果还应操作其他图标,系统会通过模式对话框提示用户。
- 用户选择"is"、“否”或“取消”(或关闭对话框)后,Java 开始对图标进行操作(复制/移动)(或在取消/关闭时不执行任何操作)。
在 TransferHandler.canImport()
中,我可以看到放置目标,但看不到图标。
在 TransferHandler.exportDone()
中,我可以看到图标,但看不到放置目标。
在 TransferHandler.importData()
中,我对两者都可见,但到那时就太晚了,因为如果我正在执行 TransferHandler.MOVE
那么 TransferHandler .exportDone()
已经删除了图标。
使用 Java Swing 可以实现我上面提到的行为吗?如果是这样,我需要使用什么版本的 JDK/JRE 以及如何实现它?
最佳答案
如果您希望能够拖放项目,以及以编程方式移动/复制它们,您需要确保您有一个正确的模型设置来支持< em>查看。这意味着您不应该将业务逻辑直接编码到 GUI 代码中。该模型应该简单且独立,侧重于管理数据的实际任务。就您而言,听起来您只需要保存一些对象集合并提供将对象从一个集合移动/复制到另一个集合的方法。执行此操作的代码称为 Controller (MVC - 如果您已经熟悉此模式,请原谅我)。然后 Controller 将更新 GUI 以反射(reflect)更改。同样,您的拖放操作将触发 Controller 操作,该操作在模型上执行类似的操作。
关于Java Swing 拖放并弹出对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5875312/