Java 拖放和可克隆

标签 java swing drag-and-drop jlabel cloneable

我要解决这个问题,您有一个 JPanelJLabel,并且您必须通过拖放来克隆 JLabel,并在放置 JLabelJPanel 上创建一个 JLabel 克隆。我想问的第一件事是是否可以在匿名类(例如监听器)中实现 Cloneable 接口(interface)到 JLabel,这样我就不必编写自己的类来扩展 JLabel 并实现 Cloneable。我知道如何通过传输“text”属性将 JLabel 拖放到 JTextField,但我不知道如何将 JLabel 克隆到 JPanel

最佳答案

在这种情况下,实现Cloneable接口(interface)不太可能实现任何有益的效果。在 Effective Java, Second Edition ,作者在第 11 项:明智地覆盖克隆中概述了克隆对象的变幻莫测。

Drag and Drop传输数据,而不是容器。由于 String 是不可变的,因此根本没有理由克隆 String。对于可变数据,复制构造函数或工厂方法更有意义。

由于 JLabel 不可由用户编辑,因此它可能是 DnD 的意外目标,尽管它是 possible 。或者,您可以添加 suitable component在运行时使用容器的 add() 方法,然后使用 validate()repaint()

关于Java 拖放和可克隆,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11699583/

相关文章:

Java AES 字符串加密/解密

java - 当面板中的 JButton 悬停时,JPanel 上的 MouseExited 会运行吗?

java - 将自定义对象从嵌入式 FX (JFXPanel) 拖放到 Swing

java - 如何使用 gradle + spring boot 1.5 构建子模块的可执行 jar

java - 带有客户端证书连接的 HTTP 客户端的 SOAP 请求超时异常

java - 子串(IndexOf( ))

java - 分层边框——这在 Java Swing 中是否可行?

java - 在 JPanel 中获得良好的网格布局

javascript - 如何获取DIV内图像的地址?

javascript - DOJO实例化和使用源码的区别