Java Drag & Drop и Cloneable

У меня есть эта проблема, чтобы решить, где у вас есть JPanel а также JLabel и вы должны клонировать JLabel с помощью перетаскивания и создания JLabel клон на JPanel где JLabel была сброшена. Прежде всего я хотел бы спросить, возможно ли реализовать Cloneable интерфейс к JLabel в анонимном классе, как слушатели, поэтому мне не нужно писать свой собственный класс, который расширяет JLabel и реализует Cloneable, Я знаю, как перетащить JLabel в JTextField путем передачи свойства "текст", но я не знаю, как клонировать JLabel в JPanel,

1 ответ

Решение

Реализация Cloneable Интерфейс вряд ли достигнет какого-либо положительного эффекта в этом контексте. В издании Effective Java, Second Edition, автор описывает капризы клонирования объектов в статье 11: Разумно переопределяйте клонирование.

Перетаскивание передает данные, а не контейнер. Так как String неизменен, нет причин клонировать String совсем. Для изменяемых данных имеет смысл использовать конструктор копирования или метод фабрики.

Так как JLabel не редактируется пользователем, это может быть неожиданной целью для DnD, хотя это возможно. Кроме того, вы можете добавить подходящий компонент во время выполнения, используя контейнер add() метод с последующим validate() а также repaint(),

Другие вопросы по тегам