我有这个问题要解决你有JPanel
和JLabel
的问题,你必须通过拖放克隆JLabel
并在JLabel
克隆上创建JPanel
克隆{1}} JLabel
被删除的地方。我想问的第一件事是,是否可以在像监听器这样的匿名类中实现Cloneable
接口到JLabel
,所以我不必编写自己的扩展JLabel
的类并实现Cloneable
。我知道如何通过转移“text”属性将JLabel
拖放到JTextField
,但我不知道如何将JLabel
克隆到JPanel
。
答案 0 :(得分:1)
在此上下文中,实现Cloneable
接口不太可能产生任何有益效果。在Effective Java, Second Edition中,作者概述了项目11中的克隆对象的变幻莫测:明智地覆盖克隆。
Drag and Drop传输数据,而不是容器。因为String
是不可变的,所以根本没有理由克隆String
。对于可变数据,复制构造函数或工厂方法更有意义。
由于JLabel
不是用户可编辑的,因此它可能是DnD的意外目标,尽管它是possible。或者,您可以在运行时使用容器的add()
方法添加suitable component,然后validate()
和repaint()
。